bar*_*ide 8 android rtsp video-streaming android-mediaplayer
我正在播放从PC上的VLC到Android MediaPlayer类的Live RTSP流(两者都在同一本地网络上).它播放顺畅,没有错误 - 问题是屏幕上的解码视频落后于现场大约5到7秒.
从调试和回调中我可以看到实时数据在启动后<1s到达设备mMediaPlayer.prepareAsync().这是当MediaPlayer类开始计算出流的格式是什么尺寸等时.然后就在视频显示在屏幕上之前(5到7秒之后),onPrepared()在我调用的地方调用mMediaPlayer.start().看起来这会start()播放从准备阶段开始时捕获的视频.
我seekTo(5000)之前和之后都尝试过start(),但它对延迟没有任何影响.
对于实时视频通话应用程序,几秒钟的设置延迟是完全正常的,但一旦视频显示这种滞后对我来说是无法接受的.
public void surfaceCreated(SurfaceHolder holder)
{
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setOnInfoListener(this);
mMediaPlayer.setOnErrorListener(this);
mMediaPlayer.setOnVideoSizeChangedListener(this);
mMediaPlayer.setOnBufferingUpdateListener(this);
mMediaPlayer.setDataSource("rtsp://192.168.1.4:5544/test");
mMediaPlayer.setDisplay(holder);
mMediaPlayer.setScreenOnWhilePlaying(true);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setOnCompletionListener(this);
mMediaPlayer.prepareAsync();
...
public void onPrepared(MediaPlayer mediaplayer)
{
mMediaPlayer.start();
...
Run Code Online (Sandbox Code Playgroud)
任何想法如何我可以减少这种滞后,或寻求到MediaPlayer缓冲的结束?我的设备是3.1,minSdkVersion是2.2.
编辑:
我在AwesomePlayer.cpp(2s和8s)中发现了一些高低水位标记.作为一个快速测试,我已经破解了libstagefright.so来制作这些0.1和1.然而,这对延迟没有影响.我的搜索继续......
| 归档时间: |
|
| 查看次数: |
6485 次 |
| 最近记录: |