android - 是否可以在 Android 中使用 mp4parser 将原始 mpeg4-es 视频帧输出到 mp4 容器?
问题描述
我正在尝试从 mpeg4-es 视频帧生成 mp4 文件。到目前为止,我可以使用 mp4parser 毫无问题地从 H264 视频帧生成 mp4 文件。
但我不确定我们是否也可以使用 mp4parser 将 mpeg4-es 视频帧输出到 mp4?(似乎没有任何关于这种方式的例子。)或者我应该寻找另一种在Android中制作它的方法?
任何意见或建议将不胜感激。谢谢
解决方案
看到这个帖子。它有你需要理解的答案。您的 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,然后尝试更长的文件。
推荐阅读
- insert - HSQLDB ON DUPLICATE KEY UPDATE 语法错误
- node.js - 如何在 advanced-rest-client 中发送数组并在 node js 应用程序中获取它
- swift - UIBelzierpath - path.contains(userTouchPoint) 只能检测 userTouchPoint.y 是否正好在路径 Y 位置
- android - 4 水平 ListViews Flutter
- java - Android:如何从输入字段中获取字符串值?
- asp.net-core - Calling async action in asp.net core means file in formData is lost from c# API method
- python - 未加括号的元组在“if”语句中给出“语法错误”
- javascript - 搜索组件不会重新呈现
- elasticsearch - Elasticsearch+kibana 6.2 与 Elasticsearch+kibana 7.9
- python - 如何将 tf-idf 应用于文本行