




















1. 获取相关信息 1.1 获取音频流信息 1.2 声道布局 1.3 音量 volumedetect 1.4 多声道混合波形图 1.5 不同声道的波形图 1.6 统计信息 2. 拆分声道 2.1 pan 2.2 channelsplit 2.3 小结 3. 查看单声道文件相关信息 3.1 获取音频流信息 3.2 音量 volumedetect 3.3 波形图 3.4 统计信息 4. volume 滤波器调节音量 4.1 音量 volumedetect 4.2 波形图 5. 合并 5.1 获取音频流信息 5.2 音量 volumedetect 5.3 不同声道的波形图 5.4 文件大小 6. AudioChannel命令参考 7. 文中用到的选项及滤镜
ffmpeg -i 2018.mp4
Stream #0:1[0x2](eng): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side), fltp, 640 kb/s (default)
ffmpeg -layouts
mono FC
stereo FL+FR
quad FL+FR+BL+BR
quad(side) FL+FR+SL+SR
5.1 FL+FR+FC+LFE+BL+BR
5.1(side) FL+FR+FC+LFE+SL+SR
… 这里只列出本例遇到的及相关布局。
ffmpeg -i 2018.mp4 -hide_banner -filter_complex volumedetect -c:v copy -f null /dev/null
ffmpeg -i 2018.mp4 -filter:a volumedetect -vn -f null /dev/null
ffmpeg -i 2018.mp4 -filter volumedetect -vn -f null /dev/null
ffmpeg -i 2018.mp4 -af volumedetect -vn -f null /dev/null
[...] mean_volume: -30.8 dB
[...] max_volume: 0.0 dB
ffmpeg -i 2018.mp4 -filter_complex "showwavespic=s=1920*720" -frames:v 1 8a.png
图略
ffmpeg -i 2018.mp4 -filter_complex "showwavespic=s=1920*960:split_channels=1" -frames:v 1 8am.png
图形放在第5.3节,与修改后的图形对比。
ffmpeg -i 2018.mp4 -af astats -f null -
注: 8100运行此命令只有~15x的速度,耗时约7分半。
增加 -vn 选项,忽略视频部分,速度增加10倍。
ffmpeg -i 2018.mp4 -vn -af astats -f null -
可以列出 Channel.(1~6) 的详细信息,其中的 RMS level dB 表示每个声道的平均音量。
Overall 则是综合6个声道的统计信息,Overall 的 RMS level dB 和前面使用 volumedetect 滤镜获取的 mean_volume 一致。
| Channel | 1 (FL) | 2 (FR) | 3 (FC) | 4 (LFE) | 5 (SL) | 6 (SR) | Overall | 通道 |
| DC offset | -0.000008 | -0.000009 | -0.000009 | 0.000001 | -0.00001 | -0.000011 | -0.000011 | 直流偏移 |
| Min level | -0.713869 | -0.71056 | -0.999829 | -0.679425 | -1.021281 | -0.9638 | -1.021281 | 最小电平 |
| Max level | 0.71264 | 0.695435 | 0.995467 | 0.677106 | 1.031011 | 0.962693 | 1.031011 | 最大电平 |
| Min difference | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 最小差值 |
| Max difference | 0.628798 | 0.581773 | 0.694345 | 0.022837 | 0.370033 | 0.392021 | 0.694345 | 最大差值 |
| Mean difference | 0.001396 | 0.001468 | 0.003859 | 0.000021 | 0.001228 | 0.001224 | 0.001533 | 平均差值 |
| RMS difference | 0.003795 | 0.003989 | 0.009361 | 0.000128 | 0.003429 | 0.003426 | 0.004856 | 均方根差值 |
| Peak level dB | -2.927632 | -2.96798 | -0.001484 | -3.35717 | 0.265267 | -0.320259 | 0.265267 | 峰值电平 dB |
| RMS level dB | -33.124027 | -32.65356 | -25.858851 | -32.648587 | -33.945536 | -33.983928 | -30.817171 | 均方根电平 dB |
| RMS peak dB | -6.735127 | -8.108412 | -5.499001 | -4.888176 | -5.274029 | -9.256225 | -4.888176 | 均方根峰值 dB |
| RMS trough dB | -112.519922 | -111.171483 | -111.433785 | -3202.270341 | -108.760425 | -106.989207 | -3202.270341 | 均方根谷值 dB |
| Crest factor | 32.345936 | 30.498536 | 19.62765 | 29.145455 | 51.349962 | 48.215143 | 波峰因子 | |
| Flat factor | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 平坦因子 |
| Peak count | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 峰值计数 |
| Abs Peak count | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 绝对峰值计数 |
| Noise floor dB | -99.643932 | -97.877327 | -98.739502 | -inf | -97.807155 | -101.373386 | -97.807155 | 噪声基底 dB |
| Noise floor count | 671 | 416 | 160 | 109866231 | 278 | 1 | 18311292.833333 | 噪声基底计数 |
| Entropy | 0.541997 | 0.554552 | 0.672009 | 0.267778 | 0.520391 | 0.523669 | 0.513399 | 熵 |
| Bit depth | 31/32/32/32 | 31/32/32/32 | 31/32/32/32 | 31/32/32/32 | 32/32/32/32 | 31/32/32/32 | 32/32/32/32 | 位深度 |
| Dynamic range | 232.436339 | 237.004291 | 282.966711 | 279.886954 | 249.608638 | 234.34847 | 动态范围 | |
| Zero crossings | 15226294 | 14816369 | 18927784 | 458054 | 14737991 | 14490558 | 过零点数 | |
| Zero crossings rate | 0.044867 | 0.043659 | 0.055774 | 0.00135 | 0.043428 | 0.042699 | 过零率 | |
| Number of NaNs | 0 | 0 | 0 | 0 | 0 | 0 | 0 | NaN 值数量 |
| Number of Infs | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Inf 值数量 |
| Number of denormals | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 非正规数数量 |
| Number of samples | 1 (FL) | 2 (FR) | 3 (FC) | 4 (LFE) | 5 (SL) | 6 (SR) | 339368208 | 样本数量 |
5.1(side) FL+FR+FC+LFE+SL+SR
ffmpeg -i 2018.mp4 -filter_complex "[0:a]pan=1c|c0=c0[fl];[0:a]pan=1c|c0=c1[fr];[0:a]pan=1c|c0=c2[fc];[0:a]pan=1c|c0=c3[lfe];[0:a]pan=1c|c0=c4[sl];[0:a]pan=1c|c0=c5[sr]" -map "[fl]" 8fl.ac3 -map "[fr]" 8fr.ac3 -map "[fc]" 8fc.ac3 -map "[lfe]" 8lfe.ac3 -map "[sl]" 8sl.ac3 -map "[sr]" 8sr.ac3
或者拆开来运行: 结果都一样。
ffmpeg -i 2018.mp4 -filter_complex "channelsplit=channel_layout=5.1(side)[FL][FR][FC][LFE][SL][SR]" -map "[FL]" 8fl.ac3 -map "[FR]" 8fr.ac3 -map "[FC]" 8fc.ac3 -map "[LFE]" 8lfe.ac3 -map "[SL]" 8sl.ac3 -map "[SR]" 8sr.ac3
使用 channelsplit 滤镜,并没有按预期的生成所有单声道文件。
拆分声道,使用 pan 滤镜,命令里已指定1c或mono,拆分出来的都是单声道文件,比特率均为96kb/s,体积都一样大。
ffprobe -i 文件名
Stream #0:0: Audio: ac3, 48000 Hz, mono, fltp, 96 kb/s
使用 pan 滤镜生成的所有6个文件,都是独立的单声道文件。
ffmpeg -i 文件名 -af volumedetect -vn -f null /dev/null
信息见下方4.1节表格。
ffmpeg -i 文件名 -filter_complex "showwavespic=s=1920*960" -frames:v 1 output.png
ffmpeg -i 文件名 -filter_complex "showwavespic=s=1920*960:split_channels=1" -frames:v 1 output.png
由于是单声道文件,所以这2行输出的图形是一样的。
这里将所有6个文件的图形分别输出,以便后续调整后对照。
ffmpeg -i 文件名 -af astats -f null -
单声道音频文件的统计信息和前面5.1声道统计信息里的对应声道数据接近,但不完全相同。
将2018文件的6个声道分别调整适当的音量,然后再合并。
volume=号后面的数值若不带dB分贝单位,则表示按比例调整音量。
ffmpeg -i 文件名 -af volumedetect -vn -f null /dev/null
| Channel | 章节: 3.2 | 章节: 4 | 章节: 4.1 | |||||
| file | 平均音量 | max | +dB | file | 平均音量 | max | ||
| 1 (FL) | 8fl.ac3 | -33.1 dB | -2.4 dB | 7dB | → | 8fl-u.ac3 | -26.2 dB | 0.0 dB |
| 2 (FR) | 8fr.ac3 | -32.6 dB | -2.5 dB | 7dB | → | 8fr-u.ac3 | -25.7 dB | 0.0 dB |
| 3 (FC) | 8fc.ac3 | -25.9 dB | 0.0 dB | 5dB | → | 8fc-u.ac3 | -20.9 dB | 0.0 dB |
| 4 (LFE) | 8lfe.ac3 | -32.6 dB | -3.4 dB | 3dB | → | 8lfe-u.ac3 | -29.6 dB | -0.4 dB |
| 5 (SL) | 8sl.ac3 | -33.9 dB | 0.0 dB | 3dB | → | 8sl-u.ac3 | -31.0 dB | 0.0 dB |
| 6 (SR) | 8sr.ac3 | -34.0 dB | -0.2 dB | 3dB | → | 8sr-u.ac3 | -31.0 dB | 0.0 dB |
章节: 3.2,4.1音量对照表,所有文件大小均为80.9Mb,比特率为96kbs,Layouts:mono, 48000Hz。
ffmpeg -i 文件名 -filter_complex "showwavespic=s=1920*960" -frames:v 1 output.png
与3.3调整音量前的图形对照。波形的幅度显著增大了。
5.1(side) FL+FR+FC+LFE+SL+SR
使用 amerge 函数时,所有输入必须具有相同的采样率和格式。如果输入持续时间不同,输出将以最短的持续时间结束。
No channel layout for input 1
Input channel layouts overlap: output layout will be determined by the number of distinct input channels Output #0, ac3, to 'output3.ac3':
Stream #0:0: Audio: ac3, 48000 Hz, 5.1, fltp, 448 kb/s
使用 amerge 滤镜过程中,提示没有指定 layout,默认会输出 5.1 声道,如上,但实际生成的文件是 5.1(side) 声道。
ffprobe -i output.ac3
Stream #0:0: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
ffmpeg -i output.ac3 -af volumedetect -vn -f null /dev/null
mean_volume: -25.8 dB。注: 第1.3节,原始音轨音量平均为:-30.8 dB
和原始输出对比,波形幅度更加突出(音量提高了约5dB)。
注:参照波形,其中output.ac3文件的第2和第3声道互调了。命令行里的输入顺序都是一致的。具体原因还不清楚。
以下文档是每晚重新生成的(中文翻译),对应于最新的 FFmpeg 修订版。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。