在 ffmpeg 命令中 , -aframes
参数用于设置 要输出的 音频帧 帧数 , 通过该参数 设置 一个 指定的 音频帧数 , 输出完 该 指定音频帧数 的 音频帧 之后 , ffmpeg 将会停止处理音频流 , 通过该参数 可以 精确控制音频输出长度 ;
在新版本的 ffmpeg 中 , 使用 -aframes
参数 控制 音频输出长度 有些过时 ; 新版本的 ffmpeg 中 , 推荐使用 -t
参数 结合 视频 或 音频 的帧率 来间接控制输出的帧数 ;
-aframes
参数 ;-t
参数 ;执行
ffmpeg -i input.mp4 -aframes 100 output.mp3
命令 , 将 input.mp4 视频中的 前 100 帧 音频 输出到 output.mp3 音频文件中 ;
-vn 参数可以禁用视频输出 , 如果输出文件是音频格式的 , 该参数可以不写 ;
如果要输出指定时长的音频 , 可以使用 -t 参数 ;
执行
ffmpeg -i input.mp4 -t 00:00:03 output.mp3
命令 , 可以将 input.mp4 视频中的 前 3 秒 音频 输出到 output.mp3 音频文件中 ;
在 ffmpeg 命令中 , -b:a
参数 的作用是 设置音频码率 ( Audio Bitrate ) ;
-b:a
参数值 是音频码率的具体数值 , 单位是 b/s 比特每秒 ; 如 : -b:a 128k
表示设置音频码率为 128 kb/s ;执行
ffmpeg -i input.mp4 -b:a 128k output.mp3
命令 , 可以将 input.mp4 视频中 的 音频 输出到 output.mp3 音频文件中 , 该音频的码率为 128kb/s ;
转换前的 input.mp4 视频 中的 音频 码率为 192kb/s , 转换后的 output.mp3 音频文件 码率为 128kb/s ;
在 ffmpeg 命令中 , -ar
参数 的作用是 设置 音频 的 采样率 , 后面 跟上 具体的 音频采样率数值 ;
音频 的 采样率 指的是 每秒对 模拟 的 音频信号 进行采样的次数 , 单位 Hz , 采样率 决定了 音频 质量 和 频率范围 ;
常见的 音频采样率 :
ffmpeg -i input.mp4 -ar 44100 output.mp3
ffmpeg -i input.mp4 -ar 48000 output.mp3
ffmpeg -i input.mp4 -ar 22050 output.mp3
执行
ffmpeg -i input.mp4 -ar 44100 output.mp3
命令 , 将 input.mp4 视频中 的 音频 输出到 output.mp3 音频文件中 , 该音频的 采样率为 44100Hz ;
转换前的 input.mp4 视频 中的 音频 采样率为 48000Hz ( 48.0kHz ) , 转换后的 output.mp3 音频文件 采样率为 44100Hz ( 44.1kHz ) ;
在 ffmpeg 命令中 , -ac
参数 的作用是 设置音频通道数 , 该参数值 指定了输出音频流应该具有的声道数量 ;
常见的 音频声道数 设置选项 :
-ac 2
将音频转为 立体声 ;-ac 1
将音频转为 单声道 ;执行
ffmpeg -i input.mp4 -ac 1 output.mp3
命令 , 将 input.mp4 视频中 的 音频 输出到 output.mp3 音频文件中 , 该 输出音频的 通道数 为 1 ;
转换前的 input.mp4 视频 中的 音频 通道数为 2 是 立体声 , 转换后的 output.mp3 音频文件 音频通道数为 1 是 单声道 ;
在 ffmpeg 命令中 , -acodec
参数 的 作用是 指定 音频编解码器 ;
音频编解码器 是用于 对 音频数据 进行 压缩编码 和 解压缩解码 的算法 , 使用 不同的 编解码器 获得的 音频文件 的 音质 / 文件大小 / 兼容性 不同 ;
-acodec
后面的 参数值 是 编解码器的名称 ;
常见的 音频编解码器 包括
在 【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)
执行
ffmpeg -i input.mp4 -acodec libmp3lame output.mp3
命令 , 将 input.mp4 视频中 的 音频 输出到 output.mp3 音频文件中 , 使用 libmp3lame 编码器将 aac 格式的音频转为 mp3 格式的音频 ;
转换前的 input.mp4 视频 中的 音频 通道数为 2 是 立体声 , 转换后的 output.mp3 音频文件 音频通道数为 1 是 单声道 ;
在 ffmpeg 命令中 , -af
参数 的 作用是 指定 音频过滤器 ;
音频过滤器可以 对 音频流 进行各种处理 , 如 : 改变音量 , 应用音效 , 噪声减少 等 ;
音频滤镜参数可参考 【FFmpeg】ffplay 命令行参数 ⑤ ( 设置音频滤镜 -af 参数 | 设置统计信息 -stats 参数 | 设置同步时钟类型 -sync 参数 ) 博客 ;
多个 音频滤镜 可以组合在一起 , 形成一个 " 音频滤镜链 " , 音频滤镜 之间 使用 逗号 隔开 , 并按照指定的顺序 将 转换效果 应用于 正在播放的 音频 ;
" 音频滤镜链 " 是一个 描述 音频滤镜 及其 参数 的字符串 , 可以通过 该参数 来 设置 音效 , 调整音量 , 改变音频 采样率 , 进行 音频 重采样 ;
设置 " 音频滤镜链 " 会 降低 音频播放性能 , 尤其是 正在 处理高质量或高采样率的音频时 ;
使用 复杂的 " 音频滤镜链 " 时 , 建议关闭不必要的程序和功能 , 以确保流畅的播放体验 ;
执行
ffmpeg -i input.mp4 -af "volume=0.25,atempo=2.0" output.mp3
命令 , 将 input.mp4 视频中 的 音频 输出到 output.mp3 音频文件中 , 输出文件 的 音量 是 输入文件的 0.25 倍 , 播放速度 是 输入文件的 2 倍 ;
由于 速度 变成了 2 倍 , 则播放时间 变为原来的 1/2 ;