首页 > 解决方案 > 是否可以在 Android 中使用 mp4parser 将原始 mpeg4-es 视频帧输出到 mp4 容器?

问题描述

我正在尝试从 mpeg4-es 视频帧生成 mp4 文件。到目前为止,我可以使用 mp4parser 毫无问题地从 H264 视频帧生成 mp4 文件。

但我不确定我们是否也可以使用 mp4parser 将 mpeg4-es 视频帧输出到 mp4?(似乎没有任何关于这种方式的例子。)或者我应该寻找另一种在Android中制作它的方法?

任何意见或建议将不胜感激。谢谢

标签: androidvideomp4mp4parser

解决方案


看到这个帖子。它有你需要理解的答案。您的 MPEG 基本流在 AVCC 中。这意味着要使其像通常的 H.264(附件 B)一样,您必须将代表 NAL 单元大小(在 MP4 中)的每个 4 字节替换为00 00 00 01. 然后,您可以在 MP4Parser 工具中使用与 H.264 相同的 MPEG-es。也许我的回答可以帮助您识别 NALU。

获取一个十六进制编辑器并检查原始 H.264 之间的差异,然后检查 现在包含在MP4 文件中的相同 H264 数据("mdat"在 MP4 中查找,然后再查找您的 H.264 字节)。看看 NALU 是如何从开始变为字节大小00 00 00 01的(十六进制)数字的?D8 9C 00 00

PS:如果您了解 FFmpeg,我建议您将 1 张图片转换为 H.264 视频帧,然后codec copy将 H264 转换为 MP4 容器。现在您可以在 MP4 文件中轻松找到 H.264(就像它被复制/粘贴到那里一样)。一旦您可以将小型 1 帧 MPEG-es 转换回 H264,然后尝试更长的文件。


推荐阅读