FFmpeg视频解码简单使用2

之前由于视频的声音有的大,有的小,导致有部分用户会投诉,所以近期对视频的声音控制进行了研究,通过参数”-af ‘volume=xx’“对声音进行了控制。

通过网上查询,最后查到能够根据

./ffmpeg -i $temp_file -af 'volumedetect' -f null ../null


[Parsed_volumedetect_0 @ 0x4fe8fa0] n_samples: 1320960
[Parsed_volumedetect_0 @ 0x4fe8fa0] mean_volume: -22.9 dB
[Parsed_volumedetect_0 @ 0x4fe8fa0] max_volume: -10.0 dB
[Parsed_volumedetect_0 @ 0x4fe8fa0] histogram_10db: 194
[Parsed_volumedetect_0 @ 0x4fe8fa0] histogram_11db: 3036

mean_volume值为标准电平值,可以通过调整该值判断声音是偏大还是偏小。

经过多次测试以及和其他同事协商,最后制定了mean_volume该值的范围,-12±3dB,然后通过参数-af ‘volume=2’进行声音的放大

volume=2 表示将原有的声音扩大两倍,具体每个视频应该扩大还是缩小需要计算。经过多次测试发现,volume每增加一次2的次方,mean_volume值每增大6dB。 对于上面的-22.9dB,使用volume=2,则mean_volume值将会为-16.9;使用volume=4,则mean_volume值将会为-10.9;最后通过转码,虽然mean_volume的数值不一定要好与计算的一致,但是基本可以落在范围里面。

我这里使用下面命令进行转码,具体的参数根据需要进行调整

./ffmpeg -i infile -c:v libx264 -preset veryslow -refs 3 -b-pyramid none -profile:v high -level 4.0 -b:v 6144k -r 30 -s 1920x1080 -aspect 16:9 -c:a aac -profile:a aac_low -ar 44100 -ac 2 -aac_tns disable -af 'volume=4' -t 15 -f mpegts outfile -y