2011-05-03 70 views
2

我需要拆分mpeg4视频流(实际上是从安卓视频摄像头)通过RTP发送它。 这个规范对于快速参考来说不大。Android:mpeg4/H.264打包示例

我不知道是否有任何mpeg4打包的示例/开源代码?

感谢您的帮助!

+0

您可能需要检查[FFmpeg](http://www.ffmpeg.org/),因为它有它自己的流媒体服务器,它是开源的,但它是用C或C++编写的。 – Augusto 2011-05-03 12:40:54

回答

5

Mpeg4文件格式也称为ISO/IEC 14496-14。谷歌它任何你会找到规格。 但是,你正在尝试做的(RTP发布者)将很难有以下原因:

  1. Mpeg4的有头在文件的结尾。只有当视频流完成时,才会写出标题。由于您想要进行实时视频流传输,您需要猜测音频和视频数据包开始/结束的位置。这在所有Android设备上都不一样,因为它们可能会使用不同的视频尺寸和编解码器参数。所以你的代码将依赖于设备,你需要支持和测试许多不同的设备。

  2. 某些设备不会定期将视频数据刷新到文件。有的只有每分钟冲洗一次。这将打破你的实时流。

  3. 没有示例代码。我知道,因为我看了。有几家公司做了类似的事情,但主要是跳过RTP。相反,他们逐渐将文件上传到自己的服务器,然后实现视频/音频流“切分”,然后将其插入到视频/代码转换器后端。我曾经为其中一家公司工作,这就是我们如何做到的。 AFAIK竞赛采取了类似的方法。好处在于,所有的复杂性都在服务器上,而当市场出现问题或新设备上市时,您无需更新客户端。

+0

感谢您的回答!我也想知道我需要拆分什么? Mpeg4容器还是h.264本身? 也可能你知道哪个h.264配置文件更容易/更好地用于静态视图的流式传输(例如,像IP摄像机 - 拍摄固定点) – 2011-05-03 13:46:44

+0

不知道配置文件 - 你甚至可以在Android设备上设置它吗? Mpeg4是一个容器,可以包含各种视频和音频流。流被分成交织的分组。规范解释了这一切。 – 2011-05-03 14:12:11

+0

据我从规范理解我需要从Android流NAL简单得到,并将其包装在RTP数据包。 – 2011-05-04 10:28:59