首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RTSP直播码流解码:安卓MediaPlayer视频延迟大

RTSP直播码流解码:安卓MediaPlayer视频延迟大
EN

Stack Overflow用户
提问于 2012-01-19 18:55:19
回答 3查看 7.1K关注 0票数 8

我正在播放从PC上的VLC到安卓MediaPlayer类的Live RTSP流(两者都在同一个本地网络上)。它播放流畅,没有错误-问题是,屏幕上解码的视频大约落后直播5到7秒。

从调试和回调中,我可以看到实时数据在启动mMediaPlayer.prepareAsync()后不到1秒就到达了设备。这就是MediaPlayer类开始计算流的格式和尺寸等的时候。然后在视频显示在屏幕上之前(5到7秒后),在我调用mMediaPlayer.start()的地方调用onPrepared()。看起来这个start()播放了最初在准备阶段开始时捕获的视频。

我在start()之前和之后都尝试过seekTo(5000),但它对延迟完全没有影响。

对于一个实时视频通话应用程序,几秒钟的设置延迟是完全可以的,但是一旦视频出现,这种延迟对我来说是不可接受的。

代码语言:javascript
复制
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();
...

你有什么想法可以减少这种延迟,或寻求结束什么是缓冲的MediaPlayer?我的设备是3.1,minSdkVersion是2.2。

编辑:

我在AwesomePlayer.cpp中发现了一些高水位线和低水位线(2s和8s)。作为一个快速测试,我已经破解了libstagefright.so来制作这0.1和1。然而,这对延迟没有影响。我的搜寻还在继续。

EN

回答 3

Stack Overflow用户

发布于 2013-07-16 02:43:18

我不会给出最终的答案,但让我分享一下我现在所拥有的。

从GStreamer到GStreamer,

  • I在PC上本地播放时出现5s延迟问题。在向管道添加以下参数后,延迟消失了:客户端上的服务器- rtspsrc;
    • on服务器的latency=0参数-v4l2srcis-live=1参数,当然还有x264enc tune=zerolatency.

没有办法控制MediaPlayer/VideoView的编解码器/媒体源参数。据我所知,在MediaCodec API中也是如此。

因此,我们需要使用GStreamer或ffmpeg。

in FFMPEG 0.9在2011年实施了

  • NDK对硬件加速编解码器媒体的访问(查找"androidmedia"),以及FFMPEG中的in FFMPEG 0.9

硬件加速编解码器访问

易用性和可移植性还有待发现。

票数 1
EN

Stack Overflow用户

发布于 2012-01-30 09:46:21

我也面临着同样的问题。解决这个问题的一种方法是重写整个播放类,以便控制输入到编解码器中的内容。但这将是最后(也是痛苦的)手段。我还在四处张望。叹息..。

票数 0
EN

Stack Overflow用户

发布于 2012-02-02 15:34:48

我也遇到了同样的问题。起初我以为它不工作,但我忘记了我的应用程序打开了,一段时间后,视频显示出来。

有趣的是,如果我使用这个在VideoView教程中找到的video1,延迟就会小得多。我正在考虑安装Darwin流媒体服务器,以检查这是VLC问题还是其他问题。

1个rtsp://v5.cache1.c.youtube.com/CjYLENy73wIaLQnhycnrJQ8qmRMYESARFEIJbXYtZ29vZ2xlSARSBXdhdGNoYPj_hYjnq6uUTQw=/0/0/0/video.3gp

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8924834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档