![MP4Box 警告不同的 PPS,即使它们是相同的](https://linux22.com/image/869087/MP4Box%20%E8%AD%A6%E5%91%8A%E4%B8%8D%E5%90%8C%E7%9A%84%20PPS%EF%BC%8C%E5%8D%B3%E4%BD%BF%E5%AE%83%E4%BB%AC%E6%98%AF%E7%9B%B8%E5%90%8C%E7%9A%84.png)
我有一个在线课程,提供 MP4 版本的课堂讲座,但讲座被分成几个部分,每个部分只有几分钟长。我试图将这些部分连接成整个讲座,网上有几个讨论推荐在 Ubuntu 上使用 MP4Box。我使用以下命令:
$ MP4Box -cat chunk1.mp4 -cat chunk2.mp4 -new lecture.mp4
我也尝试过
$ MP4Box -add chunk1.mp4 -cat chunk2.mp4 lecture.mp4
两个视频单独播放都很好。问题是,当我连接视频时,我收到以下警告:
WARNING: Concatenating track ID 1 with different PPS - result file might be broken
使用 VLC 媒体播放器播放的视频不一致。例如,如果我只连接块 1 和 2,两个音轨的音频都很好,但块 1 的视频只是一个灰屏。一旦它到达以前的块 2,一切都很好。
我在每个块上运行了 MP4Box -info,尽管有警告,但它们似乎具有相同的 PPS。事实上,它们的配置似乎完全相同。这些结果如下所示。
在 Windows 上,我使用一键式 GUI 工具(Any Video Converter Free)来完成此操作,而且我从来不用弄乱配置设置。所以我对在 Linux 上合并视频完全是菜鸟。不知道还要寻找什么或尝试什么。我能找到的有关排除串联故障的所有讨论都与 SPS 错误有关,而我没有看到这些错误。
$ MP4Box -info chunk1.mp4
* Movie Info *
Timescale 600 - Duration 00:00:55.100
2 track(s)
Fragmented File: no
File suitable for progressive download (moov before mdat)
File Brand isom - version 1
Created: GMT Tue Dec 30 16:59:35 2014
File has root IOD (9 bytes)
Scene PL 0xff - Graphics PL 0xff - OD PL 0xff
Visual PL: AVC/H264 Profile (0x15)
Audio PL: AAC Profile @ Level 2 (0x29)
No streams included in root OD
Track # 1 Info - TrackID 1 - TimeScale 30000 - Media Duration 00:00:55.055
Media Info: Language "Undetermined" - Type "vide:avc1" - 1650 samples
Visual Track layout: x=0 y=0 width=852 height=480
MPEG-4 Config: Visual Stream - ObjectTypeIndication 0x21
AVC/H264 Video - Visual Size 852 x 480
AVC Info: 1 SPS - 1 PPS - Profile Main @ Level 3.1
NAL Unit length bits: 32
Pixel Aspect Ratio 1:1 - Indicated track size 852 x 480
Self-synchronized
Track # 2 Info - TrackID 2 - TimeScale 44100 - Media Duration 00:00:55.100
Media Info: Language "Undetermined" - Type "soun:mp4a" - 2373 samples
MPEG-4 Config: Audio Stream - ObjectTypeIndication 0x40
MPEG-4 Audio AAC LC - 2 Channel(s) - SampleRate 44100
Synchronized on stream 1
对于第二个文件:
$ MP4Box -info chunk2.mp4
* Movie Info *
Timescale 600 - Duration 00:04:11.981
2 track(s)
Fragmented File: no
File suitable for progressive download (moov before mdat)
File Brand isom - version 1
Created: GMT Wed Nov 19 15:19:33 2014
File has root IOD (9 bytes)
Scene PL 0xff - Graphics PL 0xff - OD PL 0xff
Visual PL: AVC/H264 Profile (0x15)
Audio PL: AAC Profile @ Level 2 (0x29)
No streams included in root OD
Track # 1 Info - TrackID 1 - TimeScale 30000 - Media Duration 00:04:11.951
Media Info: Language "Undetermined" - Type "vide:avc1" - 7551 samples
Visual Track layout: x=0 y=0 width=852 height=480
MPEG-4 Config: Visual Stream - ObjectTypeIndication 0x21
AVC/H264 Video - Visual Size 852 x 480
AVC Info: 1 SPS - 1 PPS - Profile Main @ Level 3.1
NAL Unit length bits: 32
Pixel Aspect Ratio 1:1 - Indicated track size 852 x 480
Self-synchronized
Track # 2 Info - TrackID 2 - TimeScale 44100 - Media Duration 00:04:11.982
Media Info: Language "Undetermined" - Type "soun:mp4a" - 10852 samples
MPEG-4 Config: Audio Stream - ObjectTypeIndication 0x40
MPEG-4 Audio AAC LC - 2 Channel(s) - SampleRate 44100
Synchronized on stream 1
答案1
为什么
您的在线课程故意让您遇到这些麻烦。他们会在每节课中使用不同的(随机化) mpeg4 编码器类型,改变视频和音频比特率,并更改音频/视频的长度,因此将它们拼接在一起会导致错误。您现在遇到的问题只是正在玩弄的把戏的冰山一角,这些把戏使您试图做的事情变得困难。此外,销售视频编辑硬件的公司经常会向可以做这些事情的开源软件贡献错误,所以就是这样。
艰难之路,自由
如果您准备亲自与九头蛇战斗,那么请首先将每个单独的 MP4 文件准备为标准编码、音频/视频比特率等。您可以使用在线和免费的视频和音频转换器(小心不要下载病毒,因为内容创建者通常会将它们与软件打包在一起)。您会发现一种适用于一种文件的转换器,并发现它只适用于大多数文件,而不是所有文件。
将每个 MP4 文件转换为 x264 等开放视频格式,这样所有文件都相同。然后您可以使用 MP4box 将所有这些文件转换为一个目标 MP4 文件。
我是一名程序员,我写过一些小技巧,只需一行代码就能完成工作,但每隔 5 年左右,一切都会发生变化,你必须重新开始。从好的方面来说,这是一种了解音频和视频的好方法。这是内容创造者和内容消费者之间的战争。通用计算战争的其中一条战线。
“MP-anything” mp3、mp4 等都是盒装的。如果您希望自己的视频在 5 年或 10 年后仍可播放,请将它们转换为开源视频编码。
简单的解决方案
我知道的一个有效的解决方案是花钱购买“视频编辑软件”,它会帮你解决这个问题,然后你只需拖放你的 mp4 文件,然后复制和粘贴即可。