我正在尝试从 Smooth Streaming 服务器重建视频文件。Smooth Streaming 提供 fMP4 文件,这些文件是常规 MP4 文件,既没有 FTYP 也没有 MOOV 原子。
存储在这些原子中的所有信息都放入我拥有的 Manifest XML 文件中。
有没有办法以编程方式重建原始 MP4 文件,方法是:
- 直接从位于 MDAT 中的 H264/AAC 内容(和图片格式信息)重建新文件;或者
- 重建 FTYP 和 MOOV 原子
或者,有没有可以合并fMP4的工具?
我正在尝试从 Smooth Streaming 服务器重建视频文件。Smooth Streaming 提供 fMP4 文件,这些文件是常规 MP4 文件,既没有 FTYP 也没有 MOOV 原子。
存储在这些原子中的所有信息都放入我拥有的 Manifest XML 文件中。
有没有办法以编程方式重建原始 MP4 文件,方法是:
或者,有没有可以合并fMP4的工具?
是的。这是完全可能的。
你可以用 FFmpeg 做到这一点。从 libavformat 研究 mov.c [MP4 demuxer]。
您将需要使用 fMP4 中“丢失”的所有数据来完成内存中的 MP4。换句话说,当你需要一个 fMP4 [几乎所有] 中不存在的原子时,你将不得不输入所有硬编码的信息(这些信息,大部分来自清单)。
这并不容易……但肯定有可能。我自己做过。不幸的是,代码不是我的财产。
祝你好运!;-)
更新: PIFF 格式规范将非常有用(http://go.microsoft.com/?linkid=9682897),因此人们可以了解 fMP4 中已有的内容和没有的内容!
如果存在与碎片化的mp4文件相关的ism和ismc文件,则重建mp4文件很简单。
要求您了解每个 trak 的媒体类型、编解码器类型、编解码器特定数据和时间尺度,以重建 moov 和 ftyp 原子。
这些信息可以从 ism 和 ismc 文件中检索。
您可以从 ism 文件中检索每个轨道的媒体类型。您可以从 ismc 文件中检索编解码器类型、编解码器特定数据和每个轨道的时间刻度。
简单来说,ism/ismc 文件是服务器和客户端的元数据,因此您可以为 mp4 文件重建元数据(ftyp、moov atom)。