0

我使用 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 小时的视频,那么几秒甚至几分钟的差异不适合我。

4

0 回答 0