2012-04-15 53 views
2

当我播放视频时,使用prepareAsync(),然后在视频准备好时调用start(),从start()调用到视频实际需要大约250ms开始玩。这是怎么回事,还是有趣的事情发生在这里?请注意,该视频位于原始目录中。在我的活动的OnCreate我:Android MediaPlayer:准备好的视频需要250ms才能开始播放

private VideoView vv; 
private MediaPlayer mp = new MediaPlayer(); 
vv = (VideoView)findViewById(R.id.vv); 
vv.getHolder().addCallback(this); 
mp.reset(); 
mp.setDisplay(vv.getHolder()); 
mp.setDataSource(this, Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.moviename)); 
Log.d(TAG,"video is preparing"); 
mp.prepareAsync(); 

于是就有了听众:

@Override 
public void onPrepared(MediaPlayer arg0) { 
    Log.d(TAG, "video is prepared"); 
    mp.start(); 
} 

其实我的代码是比这更复杂。用户点击一个按钮来播放视频,也可以选择不同的视频。我有一个图像隐藏视频,并从mp.start()一定数量的ms我拉这张图片,揭示视频。在我的设备上,我必须将其设置为250毫秒,以便可靠地不透露视频以外的内容(即黑色或前一视频播放的最后一帧)。

我想知道的是,您是否可以从我的logcat中发现某件事情与此不符。我很好奇那些没有标题为ButtonBookActivity的消息。他们是否正常?这些是mp4s。请注意,在这种情况下准备视频只需要120ms。

04-15 13:30:05.600: D/ButtonBookActivity(1238): video is reset 
04-15 13:30:05.620: I/NuCachedSource2(83): ERROR_END_OF_STREAM 
04-15 13:30:05.630: D/AwesomePlayer(83): Failed to open file, all profile flags have to set through setprop method. 
04-15 13:30:05.630: I/MPEG4Extractor(83): NON-QT MODE DECIDED 
04-15 13:30:05.640: I/SampleTable(83): There are reordered frames present. 
04-15 13:30:05.640: D/ButtonBookActivity(1238): video is preparing 
04-15 13:30:05.640: I/OMXCodec(83): [OMX.Nvidia.h264.decode] AVC profile = 77 (Main), level = 32 
04-15 13:30:05.640: I/OMXCodec(83): [OMX.Nvidia.h264.decode] video dimensions are 800 x 1280 
04-15 13:30:05.640: I/OMXCodec(83): [OMX.Nvidia.h264.decode] Crop rect is 800 x 1280 @ (0, 0) 
04-15 13:30:05.760: D/ButtonBookActivity(1238): video is prepared 
04-15 13:30:06.540: D/ButtonBookActivity(1238): touch event 
04-15 13:30:06.540: D/ButtonBookActivity(1238): button clicked 
04-15 13:30:06.550: D/ButtonBookActivity(1238): calling playmovie in onTouch callback 
04-15 13:30:06.550: D/ButtonBookActivity(1238): playing movie 
04-15 13:30:06.550: D/ButtonBookActivity(1238): delaying movie reveal 
04-15 13:30:06.560: D/NvOsDebugPrintf(83): Allocating new output: 800x1280 (x 12) 
04-15 13:30:06.570: I/OMXCodec(83): [OMX.Nvidia.h264.decode] video dimensions are 800 x 1280 
04-15 13:30:06.570: I/OMXCodec(83): [OMX.Nvidia.h264.decode] Crop rect is 800 x 1280 @ (0, 0) 
04-15 13:30:06.620: D/ButtonBookActivity(1238): touch event 
04-15 13:30:06.620: D/ButtonBookActivity(1238): ignoring touch event 
04-15 13:30:06.770: V/NvAudioALSA(83): open called for devices 00000002 in mode 0... 
04-15 13:30:06.770: V/NvAudioALSA(83): getAlsaDeviceName::devices 0x2 IsVoiceCallDevice 0 devName music 
04-15 13:30:06.770: V/NvAudioALSA(83): Reset buffer size to 4096 and latency to 92879 
04-15 13:30:06.770: V/NvAudioALSA(83): Set PLAYBACK PCM format to S16_LE (Signed 16 bit Little Endian) 
04-15 13:30:06.770: V/NvAudioALSA(83): Using 2 channels for PLAYBACK. 
04-15 13:30:06.770: V/NvAudioALSA(83): Set PLAYBACK sample rate to 44100 HZ 
04-15 13:30:06.770: V/NvAudioALSA(83): Buffer size: 4096 
04-15 13:30:06.770: V/NvAudioALSA(83): Period size: 1024 
04-15 13:30:06.770: V/NvAudioALSA(83): Latency: 92879 
04-15 13:30:06.770: V/NvAudioALSA(83): Period Time: 23219 
04-15 13:30:06.770: V/NvAudioALSA(83): Periods: 4 
04-15 13:30:07.060: V/NvAudioALSA(83): Initialized ALSA PLAYBACK device music 
04-15 13:30:09.550: D/ButtonBookActivity(1238): video completed 
+1

我没有你的答案,但我也对你可能提出的任何答案感兴趣。我收到类似的消息,试图在WebView

回答

1

This可能与android音频延迟问题有关。 对于音频文件的start()调用需要一些时间,然后才会有实际的扬声器发出声音。也许这也适用于视频和媒体播放器在显示任何视频帧之前需要一段时间。

所以可能没有什么可以做的。

相关问题