【FFmpeg】ffmpeg 命令行参数 ③ ( ffmpeg 音频参数解析 | 设置音频帧数 | 设置音频码率 | 设置音频采样率 | 设置音频通道数 | 设置音频编解码器 | 设置音频过滤器 )





一、设置音频帧数 -aframes 参数



1、-aframes 参数解析


在 ffmpeg 命令中 , -aframes 参数用于设置 要输出的 音频帧 帧数 , 通过该参数 设置 一个 指定的 音频帧数 , 输出完 该 指定音频帧数 的 音频帧 之后 , ffmpeg 将会停止处理音频流 , 通过该参数 可以 精确控制音频输出长度 ;


在新版本的 ffmpeg 中 , 使用 -aframes 参数 控制 音频输出长度 有些过时 ; 新版本的 ffmpeg 中 , 推荐使用 -t 参数 结合 视频 或 音频 的帧率 来间接控制输出的帧数 ;

  • 需要 精确控制 输出帧数 时 , 使用 -aframes 参数 ;
  • 需要 精确控制 输出时间 时 , 使用 -t 参数 ;

2、-aframes 参数示例 - 输出 100 帧音频


执行

ffmpeg -i input.mp4 -aframes 100 output.mp3

命令 , 将 input.mp4 视频中的 前 100 帧 音频 输出到 output.mp3 音频文件中 ;

-vn 参数可以禁用视频输出 , 如果输出文件是音频格式的 , 该参数可以不写 ;

在这里插入图片描述
在这里插入图片描述


3、-t 参数示例 - 输出 3 秒音频


如果要输出指定时长的音频 , 可以使用 -t 参数 ;

执行

ffmpeg -i input.mp4 -t 00:00:03 output.mp3

命令 , 可以将 input.mp4 视频中的 前 3 秒 音频 输出到 output.mp3 音频文件中 ;

在这里插入图片描述





二、设置音频码率 -b:a 参数



1、-b:a 参数解析


在 ffmpeg 命令中 , -b:a 参数 的作用是 设置音频码率 ( Audio Bitrate ) ;

  • 音频码率 决定了音频文件的 质量 和 大小 , 码率越高 , 音质通常越好 , 但文件大小也越大 ;
    • 码率值太高 , 会导致文件过大 ;
    • 码率值过低 , 会降低音质 ;
  • -b:a 参数值 是音频码率的具体数值 , 单位是 b/s 比特每秒 ; 如 : -b:a 128k 表示设置音频码率为 128 kb/s ;

2、-b:a 参数设置音频码率示例


执行

ffmpeg -i input.mp4 -b:a 128k output.mp3

命令 , 可以将 input.mp4 视频中 的 音频 输出到 output.mp3 音频文件中 , 该音频的码率为 128kb/s ;

转换前的 input.mp4 视频 中的 音频 码率为 192kb/s , 转换后的 output.mp3 音频文件 码率为 128kb/s ;
在这里插入图片描述
在这里插入图片描述





三、设置音频采样率 -ar 参数



1、-ar 参数解析


在 ffmpeg 命令中 , -ar 参数 的作用是 设置 音频 的 采样率 , 后面 跟上 具体的 音频采样率数值 ;

音频 的 采样率 指的是 每秒对 模拟 的 音频信号 进行采样的次数 , 单位 Hz , 采样率 决定了 音频 质量 和 频率范围 ;


常见的 音频采样率 :

  • 44100 Hz ( 44.1 kHz ) , 这是 CD 音质的标准采样率 ;
ffmpeg -i input.mp4 -ar 44100 output.mp3
  • 48000 Hz ( 48 kHz ) , 这是 专业音频和视频制作 采样率 ;
ffmpeg -i input.mp4 -ar 48000 output.mp3
  • 22050 Hz ( 22.05 kHz ) 和 11025 Hz ( 11.025 kHz ) 这些 较低的采样率 通常用于 语音 或 低质量音频 ;
ffmpeg -i input.mp4 -ar 22050 output.mp3

2、-ar 参数设置音频采样率示例


执行

ffmpeg -i input.mp4 -ar 44100 output.mp3

命令 , 将 input.mp4 视频中 的 音频 输出到 output.mp3 音频文件中 , 该音频的 采样率为 44100Hz ;

转换前的 input.mp4 视频 中的 音频 采样率为 48000Hz ( 48.0kHz ) , 转换后的 output.mp3 音频文件 采样率为 44100Hz ( 44.1kHz ) ;

在这里插入图片描述





四、设置音频通道数 -ac 参数



1、-ac 参数解析


在 ffmpeg 命令中 , -ac 参数 的作用是 设置音频通道数 , 该参数值 指定了输出音频流应该具有的声道数量 ;


常见的 音频声道数 设置选项 :

  • 单声道 , Mono , 1 个音频声道 , -ac 2 将音频转为 立体声 ;
  • 立体声 , Stereo , 2 个音频声道 , -ac 1 将音频转为 单声道 ;

2、-ac 参数设置音频声道数示例


执行

ffmpeg -i input.mp4 -ac 1 output.mp3

命令 , 将 input.mp4 视频中 的 音频 输出到 output.mp3 音频文件中 , 该 输出音频的 通道数 为 1 ;

转换前的 input.mp4 视频 中的 音频 通道数为 2 是 立体声 , 转换后的 output.mp3 音频文件 音频通道数为 1 是 单声道 ;

在这里插入图片描述





五、设置音频编解码器 -acodec 参数



1、-acodec 参数解析


在 ffmpeg 命令中 , -acodec 参数 的 作用是 指定 音频编解码器 ;

音频编解码器 是用于 对 音频数据 进行 压缩编码 和 解压缩解码 的算法 , 使用 不同的 编解码器 获得的 音频文件 的 音质 / 文件大小 / 兼容性 不同 ;

-acodec 后面的 参数值 是 编解码器的名称 ;


常见的 音频编解码器 包括

  • libmp3lame : 用于 MP3 格式的音频编码 ;
  • aac : 用于 AAC 音频格式的编码 ;
  • copy : 用于直接复制原始音频流而不进行重新编码 ;

【FFmpeg】ffmpeg 命令行参数 ② ( Windows 环境中 ffmpeg 命令行输出文本搜索 -findstr 用法 | -findstr 搜索文本字符串用法 | 输出命令行到文件中 ) 博客中介绍了 获取 常用的 编解码器 的方法 , 执行

ffmpeg -encoders

命令 , 即可查看当前 版本的 ffmpeg 支持的 编解码器 ;

下面列举了 音频 编解码器 , 仅做参考 ;

 A..... aac                  AAC (Advanced Audio Coding)
 A....D aac_mf               AAC via MediaFoundation (codec aac)
 A..... ac3                  ATSC A/52A (AC-3)
 A..... ac3_fixed            ATSC A/52A (AC-3) (codec ac3)
 A....D ac3_mf               AC3 via MediaFoundation (codec ac3)
 A..... adpcm_adx            SEGA CRI ADX ADPCM
 A..... adpcm_argo           ADPCM Argonaut Games
 A..... g722                 G.722 ADPCM (codec adpcm_g722)
 A..... g726                 G.726 ADPCM (codec adpcm_g726)
 A..... g726le               G.726 little endian ADPCM ("right-justified") (codec adpcm_g726le)
 A..... adpcm_ima_alp        ADPCM IMA High Voltage Software ALP
 A..... adpcm_ima_amv        ADPCM IMA AMV
 A..... adpcm_ima_apm        ADPCM IMA Ubisoft APM
 A..... adpcm_ima_qt         ADPCM IMA QuickTime
 A..... adpcm_ima_ssi        ADPCM IMA Simon & Schuster Interactive
 A..... adpcm_ima_wav        ADPCM IMA WAV
 A..... adpcm_ms             ADPCM Microsoft
 A..... adpcm_swf            ADPCM Shockwave Flash
 A..... adpcm_yamaha         ADPCM Yamaha
 A..... alac                 ALAC (Apple Lossless Audio Codec)
 A..... libopencore_amrnb    OpenCORE AMR-NB (Adaptive Multi-Rate Narrow-Band) (codec amr_nb)
 A..... aptx                 aptX (Audio Processing Technology for Bluetooth)
 A..... aptx_hd              aptX HD (Audio Processing Technology for Bluetooth)
 A..... comfortnoise         RFC 3389 comfort noise generator
 A..X.. dca                  DCA (DTS Coherent Acoustics) (codec dts)
 A..... eac3                 ATSC A/52 E-AC-3
 A..... flac                 FLAC (Free Lossless Audio Codec)
 A..... g723_1               G.723.1
 A..X.. mlp                  MLP (Meridian Lossless Packing)
 A..... mp2                  MP2 (MPEG audio layer 2)
 A..... mp2fixed             MP2 fixed point (MPEG audio layer 2) (codec mp2)
 A..... libtwolame           libtwolame MP2 (MPEG audio layer 2) (codec mp2)
 A..... libmp3lame           libmp3lame MP3 (MPEG audio layer 3) (codec mp3)
 A....D mp3_mf               MP3 via MediaFoundation (codec mp3)
 A..... nellymoser           Nellymoser Asao
 A..X.. opus                 Opus
 A..... libopus              libopus Opus (codec opus)
 A..... pcm_alaw             PCM A-law / G.711 A-law
 A..... pcm_dvd              PCM signed 16|20|24-bit big-endian for DVD media
 A..... pcm_f32be            PCM 32-bit floating point big-endian
 A..... pcm_f32le            PCM 32-bit floating point little-endian
 A..... pcm_f64be            PCM 64-bit floating point big-endian
 A..... pcm_f64le            PCM 64-bit floating point little-endian
 A..... pcm_mulaw            PCM mu-law / G.711 mu-law
 A..... pcm_s16be            PCM signed 16-bit big-endian
 A..... pcm_s16be_planar     PCM signed 16-bit big-endian planar
 A..... pcm_s16le            PCM signed 16-bit little-endian
 A..... pcm_s16le_planar     PCM signed 16-bit little-endian planar
 A..... pcm_s24be            PCM signed 24-bit big-endian
 A..... pcm_s24daud          PCM D-Cinema audio signed 24-bit
 A..... pcm_s24le            PCM signed 24-bit little-endian
 A..... pcm_s24le_planar     PCM signed 24-bit little-endian planar
 A..... pcm_s32be            PCM signed 32-bit big-endian
 A..... pcm_s32le            PCM signed 32-bit little-endian
 A..... pcm_s32le_planar     PCM signed 32-bit little-endian planar
 A..... pcm_s64be            PCM signed 64-bit big-endian
 A..... pcm_s64le            PCM signed 64-bit little-endian
 A..... pcm_s8               PCM signed 8-bit
 A..... pcm_s8_planar        PCM signed 8-bit planar
 A..... pcm_u16be            PCM unsigned 16-bit big-endian
 A..... pcm_u16le            PCM unsigned 16-bit little-endian
 A..... pcm_u24be            PCM unsigned 24-bit big-endian
 A..... pcm_u24le            PCM unsigned 24-bit little-endian
 A..... pcm_u32be            PCM unsigned 32-bit big-endian
 A..... pcm_u32le            PCM unsigned 32-bit little-endian
 A..... pcm_u8               PCM unsigned 8-bit
 A..... pcm_vidc             PCM Archimedes VIDC
 A..... real_144             RealAudio 1.0 (14.4K) (codec ra_144)
 A..... roq_dpcm             id RoQ DPCM
 A..X.. s302m                SMPTE 302M
 A..... sbc                  SBC (low-complexity subband codec)
 A..X.. sonic                Sonic
 A..X.. sonicls              Sonic lossless
 A..X.. truehd               TrueHD
 A..... tta                  TTA (True Audio)
 A..X.. vorbis               Vorbis
 A..... libvorbis            libvorbis (codec vorbis)
 A..... wavpack              WavPack
 A..... wmav1                Windows Media Audio 1
 A..... wmav2                Windows Media Audio 2
 S..... ssa                  ASS (Advanced SubStation Alpha) subtitle (codec ass)

2、-acodec 参数设置 libmp3lame 编码器


执行

ffmpeg -i input.mp4 -acodec libmp3lame output.mp3

命令 , 将 input.mp4 视频中 的 音频 输出到 output.mp3 音频文件中 , 使用 libmp3lame 编码器将 aac 格式的音频转为 mp3 格式的音频 ;

转换前的 input.mp4 视频 中的 音频 通道数为 2 是 立体声 , 转换后的 output.mp3 音频文件 音频通道数为 1 是 单声道 ;

在这里插入图片描述





六、设置音频过滤器 -af 参数



1、-af 参数解析


在 ffmpeg 命令中 , -af 参数 的 作用是 指定 音频过滤器 ;

音频过滤器可以 对 音频流 进行各种处理 , 如 : 改变音量 , 应用音效 , 噪声减少 等 ;


音频滤镜参数可参考 【FFmpeg】ffplay 命令行参数 ⑤ ( 设置音频滤镜 -af 参数 | 设置统计信息 -stats 参数 | 设置同步时钟类型 -sync 参数 ) 博客 ;

多个 音频滤镜 可以组合在一起 , 形成一个 " 音频滤镜链 " , 音频滤镜 之间 使用 逗号 隔开 , 并按照指定的顺序 将 转换效果 应用于 正在播放的 音频 ;

" 音频滤镜链 " 是一个 描述 音频滤镜 及其 参数 的字符串 , 可以通过 该参数 来 设置 音效 , 调整音量 , 改变音频 采样率 , 进行 音频 重采样 ;

设置 " 音频滤镜链 " 会 降低 音频播放性能 , 尤其是 正在 处理高质量或高采样率的音频时 ;

使用 复杂的 " 音频滤镜链 " 时 , 建议关闭不必要的程序和功能 , 以确保流畅的播放体验 ;


2、-af 参数设置音频滤镜示例


执行

ffmpeg -i input.mp4 -af "volume=0.25,atempo=2.0" output.mp3

命令 , 将 input.mp4 视频中 的 音频 输出到 output.mp3 音频文件中 , 输出文件 的 音量 是 输入文件的 0.25 倍 , 播放速度 是 输入文件的 2 倍 ;

由于 速度 变成了 2 倍 , 则播放时间 变为原来的 1/2 ;

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/han1202012/article/details/136234949