从碎片化的MP4“mdat”原子重建MP4文件?

时间:2012-08-10 09:53:39

标签: c#-4.0 mp4 smooth-streaming

我正在尝试从Smooth Streaming服务器重建视频文件。 Smooth Streaming提供fMP4文件,这些文件是常规MP4文件,既没有FTYP也没有MOOV原子。

存储在那些atom中的所有信息都放在一个Manifest XML文件中,我有。

是否可以通过以下方式以编程方式重建原始MP4文件:

  • 直接从位于MDAT中的H264 / AAC内容重建新文件 (和图片格式信息);或
  • 重建FTYP和MOOV原子

否则,是否有可以合并fMP4的工具?

2 个答案:

答案 0 :(得分:3)

是。这完全有可能。

你可以用FFmpeg做到这一点。从libavformat研究mov.c [MP4 demuxer]。

您需要在内存中使用fMP4中“缺失”的所有数据完成MP4。换句话说,当你需要fMP4 [几乎所有]中不存在的原子时,你必须输入硬编码的所有信息(这些信息,大多数来自清单)。

这并不容易......但肯定有可能。我自己完成了。不幸的是,代码不是我的财产。

祝你好运! ; - )

更新: PIFF格式规范非常有用(http://go.microsoft.com/?linkid=9682897),因此可以了解fMP4中已有的内容以及不适用的内容!

答案 1 :(得分:0)

如果存在与碎片化mp4文件相关的ism和ismc文件,则重建mp4文件很简单。

要求您了解每个trak的媒体类型,编解码器类型,编解码器特定数据和时间刻度,以重建moov和ftyp原子。

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

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

简单来说,ism / ismc文件是服务器和客户端的元数据,因此您可以为mp4文件重建元数据(ftyp,moov atom)。