我使用 FFMPEG 转换视频。我的目标是使用AAC编码的音频流和MPEG-4 part 10编码的视频流将它们转换为 MP4 容器格式(MPEG-4 Part 14) 。
我使用以下行来转换视频:
ffmpeg -y -i "{inputFile}" "{outputFile}"
转换后的视频看起来不错,但是转换后的文件和输入文件中流的持续时间并不总是匹配。
我做了一些实验,持续时间的差异无疑是存在的,但是,它并没有那么大 - 无论如何我正在用小视频进行测试。这是我的结果:
| InputFile | InputAudio | InputVideo | OutputAudio | OutputVideo |
|------------|------------|------------|-------------|--------------|
| h.avi | 3s 631ms | 3s 567ms | 3s 668ms | 3s 567ms |
| h.flv | 3s 631ms | 3s 558ms | 3s 668ms | 3s 567ms |
| h.mov | 3s 532ms | 3s 533ms | 3s 682ms | 3s 534ms |
| h.mp4 | 3s 605ms | 3s 534ms | 3s 682ms | 3s 567ms |
| h.mpg | 3s 605ms | 3s 533ms | 3s 563ms | 3s 534ms |
| h.wmv | 3s 620ms | 3s 633ms | 3s 659ms | 3s 567ms |
由于我会在 FFMPEG 之上构建一个软件,如果我至少能理解这种差异的原因,我会更开心。是不是因为一些不必要的转码?
在这种情况下,我可以关闭此转码以防止 FFMPEG 重新采样我的输入视频文件吗?
如果我无法将其关闭,我如何确定(除了测试之外)这种差异与视频的大小不成比例?
例如,如果我转换一个 10 小时的视频,那么几秒甚至几分钟的差异不适合我。