ffmpeg-volumedetect

1. 查看基本信息
2. 音频音量探测
3. 绘制音频波形图 
	3.1 多声道混合波形图
	3.2 不同声道的波形图
4. 音量调整
	4.1 vol数值
	4.2 volume比例
	4.3 volume绝对值
5. 同一个原始文件的多个音量操作对比
	5.1 参数写法对照表: 
	5.2 多个音量操作对比(按音量排序↓): 
6. 批量操作sh脚本

1. 查看基本信息

$ ffprobe -hide_banner trailer.mp4
$ ffmpeg -i trailer.mp4 -hide_banner

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'trailer.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2018-02-21T20:41:54.000000Z
  Duration: 00:01:55.33, start: 0.000000, bitrate: 726 kb/s
  Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 596 kb/s, 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc (default)
    Metadata:
      creation_time   : 2018-02-21T20:41:54.000000Z
      handler_name    : ISO Media file produced by Google Inc. Created on: 02/21/2018.
      vendor_id       : [0][0][0][0]
  Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s (default)
    Metadata:
      creation_time   : 2018-02-21T20:41:54.000000Z
      handler_name    : ISO Media file produced by Google Inc. Created on: 02/21/2018.
      vendor_id       : [0][0][0][0]
本文主要关注音频参数, 这里可以收集到音频格式, 
  • Channels: 5.1声道, stereo立体声
  • Audio Track: 音轨, 单个音频流或多个音频流(播放时可切换)
  • Audio Bitrate(kb/s): 64; 96; 128
  • Codec Audio: aac; 
  • Sample rate: 48000 Hz; 采样率
其他参数还有:
  • Codec Video: H264 
  • Duration 持续时间
  • Video Bitrate(Kb/s): 1930... 视频位率
  • Video resolution: 1280x720 分辨率
  • Frame rate 帧率, ~23.98~
  • ...

2. 音频音量探测

$ ffmpeg -i trailer.mp4 -hide_banner -filter_complex volumedetect -c:v copy -f null /dev/null...
Stream mapping:
  Stream #0:1 (aac) -> volumedetect
  volumedetect -> Stream #0:0 (pcm_s16le)
  Stream #0:0 -> #0:1 (copy)
...
frame= 2765 fps=0.0 q=-1.0 Lsize=N/A time=00:01:55.31 bitrate=N/A speed= 393x       
video:8402kB audio:19868kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[Parsed_volumedetect_0 @ 0x55597acd3240] n_samples: 10172416
[Parsed_volumedetect_0 @ 0x55597acd3240] mean_volume: -17.2 dB
[Parsed_volumedetect_0 @ 0x55597acd3240] max_volume: -1.8 dB
... 这里的 mean_volume 是音频的平均大小, -hide_banner 隐藏一些版本,版权等信息... 让输出更清爽一些。

3. 绘制音频波形图

3.1 多声道混合波形图

$ ffmpeg -i trailer.mp4 -filter_complex "showwavespic=s=640*120" -frames:v 1 trailer.png

3.2 不同声道的波形图

$ ffmpeg -i trailer.mp4 -filter_complex "showwavespic=s=640*240:split_channels=1" -frames:v 1 trailer.m.png

4. 音量调整

4.1 vol数值

$ ffmpeg --help |grep vol-vol volume         change audio volume (256=normal)  更改音量(256=正常) 按比例调整音量, 数值与256的比值, 就是调整音量的幅度. 
(x < 256) 就是降低, 128就是降低到1/2. $ ffmpeg -i trailer.mp4 -vol 128 tra128_low.mp4
$ ffmpeg -i trailer.mp4 -vol 64 tra64_low.mp4

(x > 256) 就是提高, 512就是提到到2倍. $ ffmpeg -i trailer.mp4 -vol 512 tra512_loud.mp4
$ ffmpeg -i trailer.mp4 -vol 1024 tra1024_loud.mp4

4.2 volume比例

按比例增减, 分数,小数都可以. 与上面的vol类似. $ ffmpeg -i trailer.a.aac -af volume=1/2 tra1-2_low.a.aac
$ ffmpeg -i trailer.a.aac -af volume=0.5 tra0.5_low.a.aac
$ ffmpeg -i trailer.a.aac -af volume=2/3 tra2-3_low.a.aac

4.3 volume绝对值

增加/降低 10分贝 的音量 $ ffmpeg -i test.mkv -af volume=10dB loud_sound.mkv
$ ffmpeg -i test.mkv -af volume=-10dB low_sound.mkv

5. 同一个原始文件的多个音量操作对比

5.1 参数写法对照表:

vol
(256)
-af volume=
比例数值
dB
分数小数
641/4 0.25-10dB
1281/2 0.5
1712/30.67
25610
3843/21.510dB
51222
102444
vol的数值/256就是volume了. 而volume写小数还是分数都一样.

5.2 多个音量操作对比(按音量排序↓):

6. 批量操作sh脚本

$ bash ff.sh
  • 不同类型的任务最好分开处理, 通过依次打开下一个注释,关闭上一个注释,然后再执行。
  • 用 for 循环直接获取当前目录下的 mp4、mp3、avi 等文件循环处理,单个文件可以去掉 for 循环
  • 保存到.md文件中, 默认md格式, 识别开头的 # 号为标题, 每个任务都会以此标题开始, 方便查看.
  • 标题打印文件名, 及关键字mean_volume, 在使用grep过滤时, 方便查看相关参数属于那个文件.
  •     $ cat -n tmp.md |grep -A 1 mean_volume
  • 每处理一个文件的头尾都有时间戳, 可以观察单个任务使用的时间.
  • 每处理一个文件的结尾会echo一个空行。
ff.sh脚本内容: 
#!/bin/bash
for i in *.aac; do
    #*.mp4, mkv, rmvb, aac 将过程信息临时保存到 tmp.md 文件中
    echo \# ====== "$i" = mean_volume = global ==== >> tmp.md
    date >> tmp.md

    # 1 查看基本信息
    # nohup /usr/bin/ffprobe -hide_banner "$i" >> tmp.md
    # 2 音频音量探测: $ cat -n tmp.md |grep -A 1 mean_volume 为获得音频的平均大小
    # nohup /usr/bin/ffmpeg -i "$i" -hide_banner -filter_complex volumedetect -c:v copy -f null /dev/null  >> tmp.md
    # 3.1 多声道混合波形图
    # /usr/bin/ffmpeg -i "$i" -filter_complex "showwavespic=s=640*120" -frames:v 1 s."$i".png
    # 3.2 不同声道的波形图
    /usr/bin/ffmpeg -i "$i" -filter_complex "showwavespic=s=640*240:split_channels=1" -frames:v 1 m."$i".png

    date >> tmp.md
    echo   >> tmp.md
done

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
敬告:该系列的课程在抓紧录制更新中,敬请大家关注。敬告: 该系列的课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。  我将带领大家一起来学习:Qt麦克风数据探测、FFmpeg解码音频数据、音频波形图、音频播放器。具体内容包括:1.Qt采集麦克风并探测数据,生成动态矩形图。2.FFMpeg解码音频数据,生成PCM数据,并绘制波形图。3.音频播放器实战。 音视频与流媒体是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学 基础理论,而是直接做项目,往往会看到c/c++的代码时一头雾水,不知道代码到底是什么意思,这是为什么呢? 因为没有学习音视频和流媒体的基础理论,就比如学习英语,不学习基本单词,而是天天听英语新闻,总也听不懂。所以呢,一定要认真学习基础理论,然后再学习播放器、转码器、非编、流媒体直播、视频监控、等等。 梅老师从事音视频与流媒体行业18年;曾在永新视博、中科大洋、百度、美国Harris广播事业部等公司就职,经验丰富;曾亲手主导广电直播全套项目,精通h.264/h.265/aac,曾亲自参与百度app上的网页播放器等实战产品。目前全身心自主创业,主要聚焦音视频+流媒体行业,精通音视频加密、流媒体在线转码快编等热门产品。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值