假设我有一个私有媒体流(既不是音频也不是视频也不是字幕),我想用 ffmpeg 将其混合成 MP4 或 MPEG2TS 文件。不更改源码是否可行?或者我是否必须为 ffmpeg 编写编解码器?
答案1
有一个实现良好的库,名为MP4v2
适合在 C/C++ 中使用,它提供了足够的功能来实现上述目的。具体来说,可以向 MP4 添加轨道,并根据需要设置文件内的所有框类型。同样,该库会将轨道提取到另一个文件,并从文件中删除现有轨道。
对于 MPEG2TS 部分,我没有找到任何类似的库,并决定编写一个程序,.ts
通过在新的 PID 下多路复用新数据包来直接操作文件,并将 PTS 同步到音频/视频流。
这些都不会使用 ffmpeg。尽管我花了大量时间尝试理解这个(全面而庞大的)工具,但看来我必须为我的新流类型编写一个编解码器,这是一项相当艰巨的工作。