我从Udacity下载mp4格式的讲座,但它们通常分成2-5分钟的块。我想将每个讲座的视频组合成一个连续的流,我已经成功地在Windows上使用AnyVideo转换器。我试图在Ubuntu 15上做同样的事情,我的大多数网络搜索结果都显示MP4Box,它的文档和我能找到的所有在线示例提供以下语法:
MP4Box -cat vid1.mp4 -cat vid2.mp4 -cat vid3.mp4 -new combinedfile.mp4
这将创建一个具有工作音频的新文件,但视频不起作用。当我打开Ubuntu的原生视频播放器时,我得到的错误是"在流结束之前没有有效的帧解码"。当我用VLC打开时,我得到错误"不支持编解码器:VLC无法解码格式'avc3'(没有此编解码器的描述)。"我也尝试过使用-keepsys
开关,但我得到了相同的结果。
所有的文档和在线讨论使它听起来好像我要做的是,应该是非常简单的,但我似乎找不到相关的信息,我得到的具体错误。我错过了什么?
使用-force-cat
选项
MP4Box -force-cat -add in1.mp4 -cat in2.mp4 -cat in3.mp4 ... -new out.mp4
来自MP4Box文档:
-force-cat
skips media configuration check when concatenating file.
看起来,通过'avc3'
的存在,这些视频是用h.264|avc编码的。这类流的连接有几种模式。要么视频流具有兼容的编码器配置(帧大小,…),在这种情况下,文件中只使用一个配置描述(由'avc1'表示)。如果配置不完全兼容,MP4Box使用这些配置的"带内"存储(由"avc3"表示)。另一种方法是使用多个示例描述条目(流配置),但这并不被玩家很好地支持,而且MP4Box还不可能。没有其他的方法,除非你想重新编码你的视频。在Ubuntu上,你应该可以用MP4Box自带的播放器播放avc3流:MP4Client.