FFmpeg滤镜(7)

FFmpeg音频音量探测

本文介绍音频音量与音频波形相关的滤镜操作。


1、音频音量获得
ffmpeg -i input.aac -filter_complex volumedetect -c:v copy -f null /dev/null
Input #0, aac, from 'input.aac':
  Duration: 00:00:32.14, bitrate: 154 kb/s
    Stream #0:0: Audio: aac (LC), 44100 Hz, stereo, fltp, 154 kb/s
[Parsed_volumedetect_0 @ 0x7faa895027c0] n_samples: 0
Stream mapping:
  Stream #0:0 (aac) -> volumedetect
  volumedetect -> Stream #0:0 (pcm_s16le)
Press [q] to stop, [?] for help
Output #0, null, to '/dev/null':
  Metadata:
    encoder         : Lavf58.20.100
    Stream #0:0: Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s
    Metadata:
      encoder         : Lavc58.35.100 pcm_s16le
size=N/A time=00:00:30.32 bitrate=N/A speed= 519x    
video:0kB audio:5224kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[Parsed_volumedetect_0 @ 0x7faa895027c0] n_samples: 2674688
[Parsed_volumedetect_0 @ 0x7faa895027c0] mean_volume: -20.7 dB
[Parsed_volumedetect_0 @ 0x7faa895027c0] max_volume: -4.2 dB
[Parsed_volumedetect_0 @ 0x7faa895027c0] histogram_4db: 33
[Parsed_volumedetect_0 @ 0x7faa895027c0] histogram_5db: 289
[Parsed_volumedetect_0 @ 0x7faa895027c0] histogram_6db: 609
[Parsed_volumedetect_0 @ 0x7faa895027c0] histogram_7db: 1242
[Parsed_volumedetect_0 @ 0x7faa895027c0] histogram_8db: 2697

从如上信息可知,mean_volume为获得的音频的平均大小,即-20.7 dB。


2、绘制音频波形

使用FFmpeg可以通过showwavespic滤镜来绘制音频的波形图,例如:

ffmpeg -i input.aac -filter_complex "showwavespic=s=640x120" -frames:v 1 output.png

命令执行后将会生成一个宽高为640x120大小的output.png图片,图片内容为音频波形。

Input #0, aac, from 'input.aac':
  Duration: 00:00:32.14, bitrate: 154 kb/s
    Stream #0:0: Audio: aac (LC), 44100 Hz, stereo, fltp, 154 kb/s
Stream mapping:
  Stream #0:0 (aac) -> showwavespic
  showwavespic -> Stream #0:0 (png)
Press [q] to stop, [?] for help
Output #0, image2, to 'output.png':
  Metadata:
    encoder         : Lavf58.20.100
    Stream #0:0: Video: png, rgba, 640x120 [SAR 1:1 DAR 16:3], q=2-31, 200 kb/s, 68.91 fps, 68.91 tbn, 68.91 tbc
    Metadata:
      encoder         : Lavc58.35.100 png
frame=    1 fps=0.0 q=-0.0 Lsize=N/A time=00:00:00.01 bitrate=N/A speed=0.201x    
video:3kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown

上图显示的为音频波形的全部信息,即stereo的多声道音频,如果希望看到每个声道的音频波形图,可以使用showwavespic与split_channel滤镜配合绘制出不同声道的波形图:

ffmpeg -i input.aac -filter_complex "showwavespic=s=640x120:split_channels=1" -frames:v 1 output.png
Input #0, aac, from 'input.aac':
  Duration: 00:00:32.14, bitrate: 154 kb/s
    Stream #0:0: Audio: aac (LC), 44100 Hz, stereo, fltp, 154 kb/s
Stream mapping:
  Stream #0:0 (aac) -> showwavespic
  showwavespic -> Stream #0:0 (png)
Press [q] to stop, [?] for help
Output #0, image2, to 'output.png':
  Metadata:
    encoder         : Lavf58.20.100
    Stream #0:0: Video: png, rgba, 640x120 [SAR 1:1 DAR 16:3], q=2-31, 200 kb/s, 68.91 fps, 68.91 tbn, 68.91 tbc
    Metadata:
      encoder         : Lavc58.35.100 png
frame=    1 fps=0.0 q=-0.0 Lsize=N/A time=00:00:00.01 bitrate=N/A speed=0.214x    
video:3kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown

上图显示的是双声道的左右声道的波形图。


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 因为正在学习音视频,从当当买了关于FFmpeg的书,在家补充知识。遇到了一些命令行的使用,我把它从书上移到笔记上,...
    请叫我果爸阅读 14,827评论 0 18
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,262评论 4 61
  • 胡杨 其实上大学的时候刚开始我主修医学,父亲说学医好,救死扶伤,光耀门楣,我们家还没出过一个医生呢。可是后来我违背...
    冰山二三事阅读 2,408评论 0 0
  • 文/悠然 1 清晨,风微微凉。我来到玉兰树下,阵阵清香飘过,昨天还含苞...
    婉悦悠然阅读 592评论 12 12
  • 三月十六日,我从北京奔赴厦门,参加美乐家为期二天的2017年的年会。这是我遇见美乐家一年多的时间里第一次参加...
    向日葵abc阅读 1,242评论 0 0