我正在尝试构建一个Android应用程序,它接收RTSP流并显示音频/视频。我一直在使用VideoView,但实际上仍然会在3到10秒之间出现延迟。我需要这个延迟不到3秒。
在PC上,我可以看到使用VLC的相同RTSP流,只有1-2秒的延迟。我怎样才能在Android上复制这个?即使我使用MoboPlayer / RockPlayer等其他应用程序,延迟仍然是3到10秒。 (如果重要的话,我将在PC和Android上无线连接到RTSP流)
我开始考虑使用适用于Android的FFmpeg以及适用于Android的Gstreamer SDK作为MediaPlayer的替代品,但对于像我这样的新手而言,它们很难兼容,而且我遇到了多个问题。 / p>
非常感谢任何和所有信息!
答案 0 :(得分:1)
首先我认为延迟是因为初始缓冲区大小在Android硬件MediaPlayer
上无法控制。这可以通过使用自定义SW媒体播放器作为FFMpeg(现在的AVconv)或GStreamer来修复。但它会降低性能(取决于视频流压缩,分辨率,fps)和设备电池寿命。
当然使用FFMpeg或类似的C / C ++框架的本地开发很复杂,需要大量的时间和经验。
另一种选择:您可以尝试新的Android 4.1 Java API来访问视频和音频解码器。并使用此API构建您自己的RTSP播放器,并使用一些代码从RTSP服务器加载视频流(可能已存在某些Java库)。