我正在从事一个业余项目,其目标是开发一个Android应用程序,该应用程序能够使用FFMpeg作为底层引擎,通过局域网设置中的网络摄像头来传输实时提要。到目前为止,我做了以下工作-
A.为下列版本编译和生成与FFMpeg相关的库-
FFMpeg版本: 2.0
NDK版本: r8e & r9
Android平台版本: android-16和android-18
工具链版本: 4.6和4.8
平台构建: Fedora 18 (x86_64)
在适当的路径中创建文件Android.mk和Application.mk。
然而,当涉及到编写本机代码,以便使用Java从应用层访问FFMpeg的适当功能时,我不得不回答以下问题-
( a)我需要提供从本地到应用程序层的所有FFMpeg功能,用于流实时提要?
( b)为了为安卓系统编译FFMpeg,我遵循了这链接。编译选项是否足以处理*.sdp流,还是需要修改它?
我需要使用live555吗?
我对FFMpeg和安卓应用程序开发完全陌生,这将是我在安卓平台上的第一个严肃项目。我一直在寻找相关的教程,处理使用FFMpeg的RTSP流已经有一段时间了,但没有取得多少成功。此外,我尝试了VLC播放器的最新开发版本,发现它非常适合流媒体实时提要。然而,这是一个复杂的野兽和我的项目的目标是相当有限的性质,主要是学习-在短时间内。
您能否建议一些指针(例如链接、文档或示例代码),说明如何编写本机代码以利用FFMpeg库,并随后使用应用程序层的这些功能来流实时提要?此外,如果您能让我从功能角度(在语言不可知论的意义上)了解这个项目所需的背景知识,我将非常感激。
发布于 2013-08-10 20:50:37
不久前,我也遇到过类似的情况(我想从RTMP服务器上发送一个mp3 ),这让我非常沮丧。然而,我设法拼凑了一些代码,这些代码实际上完成了它应该做的事情。一些建议:
openRTSPStream(String url)这样的辅助函数,并将ffmpeg内容保留在C/C++代码中。我之所以这么说,是因为ffmpeg大量使用指针和动态内存分配,这会使尝试从Java使用它变得很痛苦。--disable-everything,这也意味着它可能禁用RTSP支持。我建议您要么移除该标志,要么使用--list-protocol、--list-demuxer、--list-muxer、--list-encoder和--list-decoder (或其他类似的内容)运行--list-protocol脚本,以了解需要启用什么。你需要记住视频和音频的格式和编码,以及你将把它解码到什么。下面是另一篇可能让您感兴趣的文章:用FFmpeg libavformat记录RTSP流
如果您需要一些示例代码或进一步的澄清,请告诉我。
https://stackoverflow.com/questions/18068377
复制相似问题