5

为了节省时间,我想在多台计算机上对大型视频文件进行分段和转码。

我使用 ffmpeg 对大型视频文件的片段进行转码:

ffmpeg -i large_movie.mp4 -ss 00:00:00 -t 00:01:00 -acodec libfaac seg0.flv
ffmpeg -i large_movie.mp4 -ss 00:01:00 -t 00:01:00 -acodec libfaac seg1.flv
...

并将这些段与:

 ffmpeg -i concat.conf -vcodec copy -acodec copy result.flv

concat.conf的内容:

ffsconcat version 1.0
file seg0.flv
file seg1.flv
...

现在我们得到一个结果FLV文件result.flv内容所有的片段。但是当我播放这个文件时,我发现段边界音频可能会暂时中断!我确信这些段密切相关,并且时间戳是正确的。

当我将segment文件中的AAC样本解码为波形格式,并用CoolEdit打开波形时,我发现在文件的前面和末尾,音频样本的值非常小(静音?)!在文件的前面,有大约 21 毫秒的“静音”样本。在文件的末尾,有大约 3 毫秒的“静音”样本。

静音采样结果是暂时中断吗?如何顺利连接包含 AAC 的媒体文件?


经过进一步测试,我发现如果你将一个波形文件拆分为小波形文件,然后使用 faac 将此小波形文件编码为小 aac 文件:

faac -P -R 48000 -B 16 -C 2 -X -o 1.aac 1.wav
faac -P -R 48000 -B 16 -C 2 -X -o 2.aac 2.wav
faac -P -R 48000 -B 16 -C 2 -X -o 3.aac 3.wav
faac -P -R 48000 -B 16 -C 2 -X -o 4.aac 4.wav
faac -P -R 48000 -B 16 -C 2 -X -o 5.aac 5.wav

控制台输出如下:

[hugeice@fedora19 trans]$ faac -P -R 48000 -B 16 -C 2 -X -o 5.aac 5.wav
Freeware Advanced Audio Coder
FAAC 1.28

Quantization quality: 100
Bandwidth: 16000 Hz
Object type: Low Complexity(MPEG-2) + M/S
Container format: Transport Stream (ADTS)
Encoding 5.wav to 5.aac
   frame          | bitrate | elapsed/estim | play/CPU | ETA

并将这个小 aac 文件连接到一个大 aac 文件使用:

cat 1.aac 2.aac 3.aac 4.aac 5.aac > big.aac

现在,如果您播放 big.aac,则在段边界处会出现短暂中断!

问题变成了如何顺利分段编码和连接aac文件?

4

0 回答 0