@
zhangsimon #18
世界上绝大多数的类似功能的产品都是 ffmpeg 套个壳。(少部分是独立编解码器,但是功能肯定少得多。)
至于无转码合并,是可以的,但是要求非常高,要求关键的编码参数必须一致,否则播放的时候会让解码器崩溃。
举个例子,如果你压的是 H.264 ,参考帧开的是 4,而原片开的是 6,那么合并以后如果 SPS/PPS 里说这片只参考了 4 帧,解码器按照 4 帧分配了内部存储结构空间,播到参考帧 6 的地方就会因为 buffer overrun 或者 missing frame 而炸掉。
H.264 的关键参数少说十几个,H.265 的关键参数更多,任何一个参数不匹配都会炸掉解码器。
所以你说,无转码合并难吗?
再来说点更难的。比如电视广播常用的 Open GOP,每一段 GOP 里的帧都有或多或少参考之前一个 GOP 的内容。也就是说,整个视频流可能从凌晨电视台开机开始,到晚上停机休息为止,这十几个小时的视频都没有办法完美切割或者合并。
从开机的第一个 IDR 开始,后面的所有内容就像这样:I B P B P I B P B P 。如果是 Close GOP,那么第 1 帧和第 6 帧都是 IDR 帧,从 GOP 边界切开就能完美分割。如果是 Open GOP,那么这两帧都是 i 帧,意味着第 2 帧和第 7 帧都可以跨 GOP 参考,也就是说第 7 帧上的画面可以从第 5 帧甚至第 3 帧取来做参考。如果你把第一个 GOP 切掉,那么第 7 帧直接就成了无法播放的坏帧了。所以像日本的电视台节目,切开的位置头几帧是肯定要坏掉的。
如果是 H.265 的 4K 节目的话,也有类似的 IDR/CRA/RASL/RADL/TRAIL 帧的区别。
这些基础知识就够咱们研究好久了……
这些东西不是你希望他支持他就能做出来的。有些功能,确实不太现实。