我的要求是能够在我的Android应用中播放实时视频流。流将通过RTSP / RTP。我无法控制来源;看起来RTP有效负载不符合开发人员指南Video encoding recommendations中列出的要求。具体而言,视频源似乎违反了以下要求:
对于3GPP和MPEG-4容器,moov原子必须先于任何mdat原子,但必须接替ftyp原子
基本上,看起来我们得到原始的H264数据(没有包装在容器中)。
现在,
MediaPlayer
课程播放此流。在上述情况2和3中,DDMS日志指出了Stage Fright框架在内部使用的事实,而在案例1中,正在使用PVP(即OpenCore)。这一切使我得出结论:
这让我想到了我的问题:
为Android 2.2移植stagefright涉及什么?
此外,我在AOSP来源中注意到,较新的NuPlayer
现在负责播放RTSP流。问题:
- 是否可以将
NuPlayer
移回旧版本的Android(2.2或2.3)?- 如果是这样,我需要做些什么才能在我的应用中使用它?
醇>
我知道我可以查看源代码并使用NDK来构建stagefright和NuPlayer(尽管我从未在NDK级别工作过)。我不知道的是我的应用程序如何使用这个NuPlayer。
答案 0 :(得分:0)
我遇到了类似的问题,但我找到了一个解决方案。您必须修补系统build.prob文件。请查看我的问题,我也发布了answer.
默认情况下,stagefright在build.prop文件中保持禁用状态。您必须启用它并重启设备。然后,您可以访问支持您的要求的stagefright框架。
对于RTSP流媒体下载远程机器中的live555MediaServer.exe文件,并将某些媒体文件保存在同一位置。打开live555MediaServer.exe文件。
使用以下代码 -
private final String RTSP_FILE = "rtsp://<remote machine IP>/<file name>";
mVideoView.setVideoURI(Uri.parse(RTSP_FILE));