解码 RIMM 流文件格式

2022-09-02 14:11:30

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

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

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

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

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

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

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

并且我正在写入输出流。此处为一些示例文件。

编辑 2:事实证明,在12-15种可用的视频捕获模式中,约有3-4种完全失败并拒绝输出数据,即使在最简单的测试应用中也是如此。因此,任何工作解决方案都应该在AMR和AAC中实现MPEG-4,H264和H263,以便在一个声音编解码器和/或分辨率失败时获得回退替代方案。重新启动,挂起和不乱扔黑莓视频实现的内容,并且因固件而异;总吸吮。


答案 1

我知道这并不能深入RIMM如何使用H.264的细节,但它可能会为您指出正确的方向。

几周前,我使用Handbrake开源应用程序(我在Windows上运行)成功转换了黑莓视频文件。

您可能希望深入了解 Handbrake 代码,或它们使用的某个库的代码,以查看如何处理这些 RIMM 文件。

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

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


答案 2

你有没有尝试过ffmpeg2theora,在我找到ffmpeg2theora之前,我和ffmpeg度过了一段非常糟糕的时光!!,没有音频问题,没有视频问题。

只需要写:

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

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

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


推荐