1

我将 H.264 流存储为文件。我正在尝试通过将此流添加到 MDAT BOX 来创建 MPEG4 文件。我创建了 MPEG-4 标准所需的其他标头。但我无法读取 MPEG-4 文件。

我解析了 H.264 流,发现文件中有多个 I 帧。在我看来,这是零散的 H.264 流。

有什么方法可以将这个分段的 H.264 流组合成一个 I 帧?

我已经浏览了链接Problem to Decode H264 video over RTP with ffmpeg (libavcodec)

我实现了链接中提到的内容,但我仍然无法运行由此创建的 MPEG-4。

使用上述技术,我得到了 fragmentType = 5。我得到了以下 nalTypes (8, 2, 1, 0, 0, ...)。我得到指定的 startBit,对于其他片段,我得到 00(对于 StartBit|endBit)。我没有得到 endBit。

当我尝试使用 FFMPEG 重新转换创建的 MPEG-4 文件时,我收到以下错误:“标头损坏”。看起来 IDR 帧的重建工作不正常。

如果我遵循的方法有任何问题,请告诉我。

H.264 流文件大约 100KB。当使用 FFMPEG 将此文件转换为 MP4 时,我得到大约 38KB。这是否意味着 FFMPEG 再次重新编码文件以重新创建 MP4 文件?

使用链接中提到的上述技术,我创建的 MP4 本身约为 100KB。

请让我知道我在做什么这是错误的。

提前致谢。

4

1 回答 1

0

听起来您想将 H.264 基本流包装在 mp4 容器中,以便您可以播放它。像 mp4box ( http://gpac.wp.mines-telecom.fr/mp4box/ ) 这样的工具将使您能够将基本流包装成 mp4 文件。例如:

mp4box -add MySourcFile.h264 MyDestFile.mp4

于 2013-02-13T21:22:47.177 回答