• 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
    分数 小数
    64 1/4 0.25 -10dB
    128 1/2 0.5
    171 2/3 0.67
    256 1 0
    384 3/2 1.5 10dB
    512 2 2
    1024 4 4
    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
    
    sztom osoft@qq.com CC-BY-NC-SA
  • 相关阅读:
    原生JS(类、原型、构造函数)
    原生JS(cookie操作的封装)
    原生JS(cookie)
    原生JS(异步请求)
    原生js(1)
    iframe框架嵌套页面(全屏,页面上下左右有空白,去双滚动条)
    Zabbix4.0监控Nginx1.16
    Nginx1.16访问限制
    django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
    Zabbix4.0解决中文乱码
  • 原文地址:https://www.cnblogs.com/sztom/p/14891332.html
Copyright © 2020-2023  润新知