解码 RIMM 流文件格式

Posted

技术标签:

【中文标题】解码 RIMM 流文件格式【英文标题】:Decoding RIMM streaming file format 【发布时间】:2011-08-03 01:43:32 【问题描述】:

我想解码 Blackberry RIMM 文件中的视频(视觉)帧。到目前为止,我有一个 parser,以及一些来自 RIM 的相应容器 documentation。

视频编解码器是 H264,并使用 video.encodings 属性之一在设备上显式设置。但是,FFMPEG 无法解码帧,这让我发疯。

编辑 1: 问题似乎是帧中缺少 SPS 和 PPS,到目前为止,人为插入它们已被证明是不成功的(全是灰色图像)。黑莓9700送

0x00 0x00 0x?? 0x?? 0x类型

其中类型根据 H264 规范中的表 7-1(I 和 P 帧)。我们相信0x?? 0x??表示帧的大小,但大小并不总是对应于解析器找到的大小(解析器似乎工作正常)。

我有一个来自黑莓的 Windows 解码器编解码器,称为 mc_demux_mp2_ds.ax,可以播放一些以相同方式捕获的 MPEG-4 文件,但它是 Windows 的二进制文件。并且 H264 文件不会以任何方式播放。我知道以前的attempts。 javax.microedition.media.Manager 的捕获 url 是

encoding=video-3gpp_width=176_height=144_video_codec=H264_audio_codec=AAC

我正在写入输出流。一些示例文件here。

编辑 2:结果表明,即使在最简单的测试应用程序中,12-15 种可用的视频捕获模式中约有 3-4 种完全失败并拒绝输出数据。因此,任何可行的解决方案都应在 AMR 和 AAC 中实现 MPEG-4、H264 和 H263,以便在一个声音编解码器和/或分辨率失败时获得备用替代方案。重新启动、挂起以及不影响黑莓视频实现的内容,并且因固件而异;总吸力。

【问题讨论】:

你是如何使用 ffmpeg 的?我们可以看看你的命令吗? ffmpeg 是通过代码使用,而不是通过命令行 【参考方案1】:

您是否尝试过使用 ffmpeg2theora,在我发现 ffmpeg2theora 之前,我使用 ffmpeg 真的很糟糕!!,没有音频问题,没有视频问题。

只需要写:

ffmpeg2theora video.[mov, avi, mp4, vob, etc] -> 获取 video.ogv

它是为许多平台编译的(不需要像ffmpeg那样编译和编译),我在OSX 64位和linux 64位下使用它。

http://v2v.cc/~j/ffmpeg2theora/

【讨论】:

【参考方案2】:

我知道这并没有深入了解 RIMM 如何使用 H.264,但它可能会为您指明正确的方向。

几周前,我使用Handbrake open-source application 成功转换了一个黑莓视频文件(我在 Windows 上运行)。

您可能想深入研究 Handbrake 代码或他们使用的其中一个库的代码,以了解如何处理这些 RIMM 文件。

颠覆:svn co svn://svn.handbrake.fr/HandBrake/trunk handbrake-svn

GitHub:https://github.com/HandBrake/HandBrake

【讨论】:

以上是关于解码 RIMM 流文件格式的主要内容,如果未能解决你的问题,请参考以下文章

FFMPEG音视频解码

视频编码与视频格式的区别和联系

FFMPEG 在解码流时对每一帧提出请求,性能降低

视频编解码·学习笔记4. H.264的码流封装格式 & 提取NAL有效数据

iOS利用FFmpeg解码音频数据并播放

GoLang读写数据---下