【问题标题】:RTSP streaming on Android client using FFMpeg使用 FFMpeg 在 Android 客户端上进行 RTSP 流式传输
【发布时间】:2013-08-06 18:18:51
【问题描述】:

我正在从事一个爱好项目,其目标是开发一个 Android 应用程序,该应用程序能够使用 FFMpeg 作为底层引擎,在 LAN 设置中流式传输通过网络摄像头捕获的实时源。到目前为止,我做了以下 -

A.为以下版本编译和生成 FFMpeg 相关库 -

FFMpeg 版本:2.0
NDK 版本:r8e & r9
Android 平台版本:android-16 & android-18thisthisthisthis
工具链版本:4.6 & 4.8
构建平台:Fedora 18 (x86_64)

B.在适当的路径中创建文件 Android.mk 和 Application.mk。

但是,当谈到使用 Java 从应用层访问 FFMpeg 的适当功能编写本机代码时,我遇到了以下问题 -

a) 我需要从本机层到应用程序层提供 FFMpeg 的哪些所有功能以流式传输实时源?
b) 为了为 Android 编译 FFMpeg,我关注了this 链接。编译选项是否足以处理 *.sdp 流,还是我需要修改它?
c) 需要使用live555吗?

我对 FFMpeg 和 Android 应用程序开发完全陌生,这将是我在 Android 平台上的第一个严肃项目。我一直在寻找使用 FFMpeg 处理 RTSP 流的相关教程一段时间,但没有取得多大成功。此外,我尝试了 VLC 播放器的最新开发版本,发现它非常适合实时流式传输。然而,它是一个复杂的野兽,我的项目的目标是非常有限的,主要是学习 - 在很短的时间内。

您能否提出一些建议(例如链接、文档或示例代码),说明如何编写本机代码以利用 FFMpeg 库并随后使用应用层的这些功能来流式传输实时提要?此外,如果您能从功能的角度(在与语言无关的意义上)告诉我该项目所需的背景知识,我将不胜感激。

【问题讨论】:

  • 我正在尝试创建一个 rtsp 播放器,它可以以小于 1 秒的延迟播放流。看来你已经做了一些工作可以请你在这里指导我吗
  • 我想在 android 中使用 ffmpeg 播放和录制 rtsp 流。我对ffmpeg一无所知

标签: android-ndk ffmpeg rtsp


【解决方案1】:

前段时间我也遇到过类似的情况(我想从 RTMP 服务器流式传输 mp3),这非常令人沮丧。然而,我设法拼凑了一些实际上做了它应该做的代码。一些建议:

  • 您不想将 ffmpeg 的 API 暴露给您的 Java 代码。相反,请考虑创建像 openRTSPStream(String url) 这样的辅助函数,并将 ffmpeg 内容保留在您的 C/C++ 代码中。我这样说是因为 ffmpeg 大量使用指针和动态内存分配,这会让尝试从 Java 中使用它变得很痛苦。

  • 您用于编译库的脚本使用标志--disable-everything,这也意味着它可能禁用了RTSP 支持。我建议您删除该标志或使用--list-protocol--list-demuxer--list-muxer--list-encoder--list-decoder(或类似的东西)运行configure 脚​​本以了解你需要启用什么。您需要牢记视频和音频的格式和编码以及您将其解码为的内容。

  • 当您从流中读取数据包时,您的本机代码可以通过回调函数将缓冲区发送到您的 Java 代码,然后将缓冲区显示为视频/音频。

这是您可能感兴趣的另一篇 SO 帖子:Record RTSP stream with FFmpeg libavformat

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

【讨论】:

  • 抱歉,回复晚了,伙计们。到目前为止,我已经能够通过关注Stephen Dranger's tutorial 和 Arash Shafiei 的updated version 的回购来读取本地存储的视频文件并逐帧保存。为了将音频和视频流渲染到 Android 上,我使用的是 SDL 2.0。因此,目前正忙于为我的目的集成 FFMpeg 和 SDL。遇到 Oliver Xorange 的 Android video player 的 GitHub 存储库,这可能对寻求解决方案的人有些兴趣。
  • 感谢您的更新!如果您遇到问题,请告诉我,我们可以一起解决。
猜你喜欢
  • 2020-06-05
  • 2014-12-07
  • 1970-01-01
  • 1970-01-01
  • 2015-06-14
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
  • 2014-10-28
相关资源
最近更新 更多