从分段的MP4“mdat”原子重建MP4文件?

6
我正在尝试从Smooth Streaming服务器重建视频文件。Smooth Streaming提供fMP4文件,这些文件是常规MP4文件,既没有FTYP也没有MOOV原子。
存储在这些原子中的所有信息都放置在Manifest XML文件中,我已经拥有了该文件。
有没有一种程序化的方法来重新构建原始的MP4文件,可以通过以下方式之一实现:
  • 从位于MDAT中的H264 / AAC内容(和图片格式信息)直接重建新文件;或者
  • 重新构建FTYP和MOOV原子
否则,是否有工具可以合并fMP4?
2个回答

3

是的,完全有可能。

您可以使用FFmpeg来完成。学习libavformat中的mov.c [MP4解复用器]。

您需要在内存中完成MP4并填充所有“缺失”的数据。换句话说,当您需要一个在fMP4中不存在的原子时[几乎所有情况],您将不得不硬编码输入所有信息(大多数信息来自清单)。

这不容易...但肯定是可能的。我已经亲自完成了。不幸的是,该代码不是我的财产。

祝你好运! ;-)

更新: PIFF格式规范将非常有用(http://go.microsoft.com/?linkid=9682897),以便了解fMP4中已经存在的内容和不存在的内容!


0

如果有与分段mp4文件相关的ism和ismc文件,重建mp4文件就很简单。

要重建moov和ftyp原子,需要知道每个轨道的媒体类型、编解码器类型、编解码器特定数据和时间刻度。

这些信息可以从ism和ismc文件中检索到。

您可以从ism文件中检索每个轨道的媒体类型。 您可以从ismc文件中检索每个轨道的编解码器类型、编解码器特定数据和时间刻度。

简而言之,ism/ismc文件是服务器和客户端的元数据,因此您可以为mp4文件重建元数据(ftyp、moov原子)。


我有ism、ismc和ismv(分段mp4文件)。你说得对,我们可以从ismc文件中获取每个轨道的编解码器类型、编解码器特定数据和时间刻度。此外,可以通过在url中添加/Manifest来访问此信息,例如http://localhost/pp/Test.ism/Manifest。这将返回清单数据。现在,请告诉我是否有任何方法可以从此创建MP4文件?我的意思是,是否有任何库或任何可用的代码片段来完成此操作。 我已经尝试了一个月的时间,但没有任何进展。请给我一些想法。 - waghekapil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接