上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

ffmpeg 常用命令行详解

guduadmin13小时前

概述

ffmpeg 是一个命令行音视频后期处理软件

1. 裁剪命令

参数说明

  • -i 文件,orgin.mp3 为待处理源文件
  • -ss 裁剪时间,后跟裁剪开始时间,或者开始的秒数
  • -t 裁剪时间
  • output.mp3 为处理结果文件
    ffmpeg -i organ.mp3 -ss 00:00:xx -t 120 output.mp3
    ffmpeg -i organ.mp3 -ss 360 -t 230 output.mp3

    2. 合成命令

    2.1 混合合成

    参数说明

    • -i 文件 1.mp3 和 2.mp3 为待合成的两个源文件
    • -filter_complex 过滤器参数
    • amix=inputs 配置输入的整体样本数
    • duration,first:长度取决于第一个文件,longest:长度取决于时间最长文件,shortest:长度取决于时间最短文件
    • dropout_transition:输入流结束时用于体积重新规范化的过渡时间
    • -f mp3 设置导出文件格式
      ffmpeg -i 1.mp3 -i 2.mp3 -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -f mp3 remix.mp3

      2.2 连接合成

      参数说明

      • concat 合并文件指令
        ffmpeg -i "concat:Box01.mp3|Box02.mp3" Box.mp3
        ffmpeg -i "concat:headerNew.mp3|006.mp3" -acodec copy demo6.mp3

        2.3 淡出效果

        参数说明

        • afade 淡入淡出指令
        • 从 st 秒开始,经过 d 秒钟的淡出效果
          ffmpeg -i bgm3.mp3  -filter_complex afade=t=out:st=16:d=4 bgm31.mp3

          2.4 合并背景音和视频

          首先需要将原视频的声音删除。这里的文件名需要加上英文引号,如果不加的话,会提示No such file or directory。

          ffmpeg -i "audio.mp4" -y -f mp4 -an -codec copy -q:v 1 "audio-无声.mp4"

          然后将无声视频和音频融合

          ffmpeg -i audio-无声.mp4 -i accompaniment.wav -c:v copy -c:a aac -strict experimental audio-消音.mp4

          即可获得消去人声的视频。但笔者口语不好,觉得原视频的语速有些快了,故又调整了视频倍速为0.8倍速。

          ffmpeg -i test.mp4 -filter_complex "[0:v]setpts=10/8*PTS[v];[0:a]atempo=0.8[a]" -map "[v]" -map "[a]" test-2.mp4

          这条指令同时调整视频倍速和音频倍速,setpts=(倍速的倒数)*PTS[v],atempo=(倍速)[a]

          【免费分享】音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击788280672加群免费领取~

          ffmpeg 常用命令行详解,第1张

          3. 转换调整命令

          3.1 格式转换

          参数说明

          • -i 文件,a.mp3 为待处理源文件
          • -ar 音频抽样率
          • -ac 音频Channel数
          • -f 强制输出格式 例如mp3, wav等
            # 将a.mp3转化程a.wav,设定抽样率为16000
            ffmpeg -i a.mp3 -ar 16000 -ac 1 a.wav
            # 将Frozen.mka转化成a.mp3
            ffmpeg -i Frozen.mka -ar 16000 -f mp3 a.mp3

            3.2 音量调整

            参数说明

            • -i 文件,a.mp3 为待处理源文件
              # 音量256为原始音量,如果要调整到两倍音量,则设置为512,调整到一半音量,则设为128,下面为减小一半音量的命令
              ffmpeg -i Box.mp3 -vol 128 box3.mp3
              # 使用dB调整音量
              ffmpeg -i a.mp3 -af volume=-20dB b.mp3
              • dB的换算公式 1.1 dB = 1.1 倍,2 dB = 1.25倍,3 dB = 1.4倍,6 dB = 2 倍,10 dB = 3 倍,20 dB = 10 倍,30 dB = 30 倍。其它就可以用上述数值换算,并不困难。(反过来 – 6 dB 就是 1/2 = 0.5) 2.在换算时要把握一个原则,dB数值的相加 等于 倍数的相乘。 例如:40 dB = 20dB + 20 dB = 10 * 10 = 100 倍 -20dB谱宽就是信号衰减到十分之一时的频谱带宽。

                3.3 升降调

                # 升半音
                ffmpeg -i "mine.mkv" -filter_complex "asetrate=48000*2^(1/12),atempo=1/2^(1/12)" "output.mkv"
                # 升全音
                ffmpeg -i "mine.mkv" -filter_complex "asetrate=48000*2^(2/12),atempo=1/2^(2/12)" "output.mkv"
                # 降半音
                ffmpeg -i "mine.mkv" -filter_complex "asetrate=48000*2^(-1/12),atempo=1/2^(-1/12)" "output.mkv"
                # 降全音
                ffmpeg -i "mine.mkv" -filter_complex "asetrate=48000*2^(-2/12),atempo=1/2^(-2/12)" "output.mkv"

                3.4 音频速率调整

                改变音频速率最简单的方法是直接调整音频的采样率,但是与此同时,这种方法会改变音频的音色。目前一般采用对原音进行重采样,差值等方法来实现。下面这行命令的倍率调整范围为0.5到2。

                ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv
                

                如果想要再快的话,需要更改命令,通过将多个atempo过滤器串接在一起来绕过这个限制。

                ffmpeg -i input.mkv -filter:a "atempo=2.0,atempo=2.0" -vn output.mkv

                3.5 视频速率调整

                改变视频的播放速率是通过修改视频的表示时间戳(PTS)来实现的。举个简单的例子,如果在时间戳1和2处显示两个连续帧,我们想要加快视频速度,那么这两个时间戳需要分别变为0.5和1。因此,我们必须把他们乘以0.5。

                ffmpeg -i input.mkv -r 16 -filter:v "setpts=0.5*PTS" output.mkv
                

                对视频进行加速时,为了不丢帧,可以利用-r 参数指定输出的fps。 一般来说,视频倍速还需要将视频中的音频也一同倍速,通过混合的过滤图实现,命令如下,

                ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv

                4. 提取命令

                4.1 从视频中提取音频

                参数说明

                -map 提取视频-音频流的序号 -b:a 码率 kb/s -f 强制输出格式 例如mp3, wav等

                # 从frozen.mkv中,提取音频文件,保存为audio.1.mp3
                ffmpeg -i frozen.mkv -map 0:1 -b:a 64k -f mp3 a.1.mp3
                ffmpeg -i frozen.mp4 -q:a 0 -map a audio.mp3
                ffmpeg -i frozen.mp4 -vn -codec copy audio.m4a
                ffmpeg -i audio.m4a -y -acodec libmp3lame -aq 0 audio.mp3

                查看视频,包含的视频流、音频流如下: encoder : libebml v1.2.3 + libmatroska v1.3.0 Duration: 01:42:13.09, start: 0.000000, bitrate: 2954 kb/s Stream #0:0: Video: h264 (High), yuv420p, 1024x576 [SAR 1:1 DAR 16:9], 23.98 fps Stream #0:1(eng): Audio: ac3, 48000 Hz, 384 kb/s (default) title : 英语 Stream #0:2(chi): Audio: ac3, 48000 Hz, 384 kb/s title : 台配 Stream #0:3(chi): Audio: ac3, 48000 Hz, 384 kb/s title : 粤语
                查看原音视频文件音轨频率

                 

                ffmpeg -i "mine.mkv"

                命令执行后找到音轨的Stream,频率为48000Hz;

                 Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 2316x1440, 22449 kb/s, 30 fps, 30 tbr, 600 tbn, 1200 tbc (default)
                    Metadata:
                      creation_time   : 2022-08-31T02:15:18.000000Z
                      handler_name    : Core Media Video
                      vendor_id       : [0][0][0][0]
                      encoder         : H.264
                  Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 2 kb/s (default)
                    Metadata:
                      creation_time   : 2022-08-31T02:15:18.000000Z
                      handler_name    : Core Media Audio
                      vendor_id       : [0][0][0][0]

                5. 消音命令

                参数说明

                • -i 文件,a.mp3 为待处理源文件
                • -ac 音频Channel数
                  ffmpeg -i file.mp3 -af pan="stereo|c0=c0|c1=-1*c1" -ac 1 karaoke.mp3

                  原文链接 ffmpeg 常用命令行详解 - 掘金

网友评论