首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于FFMpeg的安卓客户端RTSP流媒体

基于FFMpeg的安卓客户端RTSP流媒体
EN

Stack Overflow用户
提问于 2013-08-05 21:49:33
回答 1查看 7.8K关注 0票数 5

我正在从事一个业余项目,其目标是开发一个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库,并随后使用应用程序层的这些功能来流实时提要?此外,如果您能让我从功能角度(在语言不可知论的意义上)了解这个项目所需的背景知识,我将非常感激。

EN

回答 1

Stack Overflow用户

发布于 2013-08-10 20:50:37

不久前,我也遇到过类似的情况(我想从RTMP服务器上发送一个mp3 ),这让我非常沮丧。然而,我设法拼凑了一些代码,这些代码实际上完成了它应该做的事情。一些建议:

  • 您不希望向Java代码公开ffmpeg的API。相反,请考虑创建像openRTSPStream(String url)这样的辅助函数,并将ffmpeg内容保留在C/C++代码中。我之所以这么说,是因为ffmpeg大量使用指针和动态内存分配,这会使尝试从Java使用它变得很痛苦。
  • 用于编译库的脚本使用标志--disable-everything,这也意味着它可能禁用RTSP支持。我建议您要么移除该标志,要么使用--list-protocol--list-demuxer--list-muxer--list-encoder--list-decoder (或其他类似的内容)运行--list-protocol脚本,以了解需要启用什么。你需要记住视频和音频的格式和编码,以及你将把它解码到什么。
  • 当您从流中读取数据包时,您的本机代码可以通过回调函数向Java代码发送缓冲区,而回调函数又会将缓冲区显示为视频/音频。

下面是另一篇可能让您感兴趣的文章:用FFmpeg libavformat记录RTSP流

如果您需要一些示例代码或进一步的澄清,请告诉我。

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

https://stackoverflow.com/questions/18068377

复制
相关文章

相似问题

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