如何顺利连接两个AAC文件?

时间:2013-08-14 11:27:02

标签: c ffmpeg concat aac

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

我使用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内容所有段。但是当我播放这个文件时,我发现片段边界音频可能会暂时中断!我确信这些段紧密相关,时间戳是正确的。

当我将段文件中的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文件?

0 个答案:

没有答案