FFmpeg使用笔记

参考

命令

查看FFmpeg的命令帮助:ffmpeg -h
将MP4文件file.mp4转换为音频文件file.wav,并转为16kHz采样率的音频文件file_16k.wav,命令如下:

ffmpeg -i file.mp4 -codec:a pcm_s16le -ac 1 file.wav -loglevel quiet
ffmpeg -i file.wav -f wav -ar 16000 -ac 1 file_16k.wav -loglevel quiet

转换音频文件格式,也可以在转换的时候加上采样率命令:
ffmpeg -i in_file -codec:a pcm_s16le -ac 1 -ar 16000 out_file -loglevel quiet

命令 含义
-i filemname.fmt 后面跟设置输入文件名filemname.fmt
-f fmt 强制格式,设置输出格式为fmt
-c/-codec codec 编解码器名称codec(wav格式对应pcm_s16le,signed 16 bits little endian, 有符号 16 位小端)
-ar samplerate 设置音频采样率(Hz)
-ac channels 设置音频通道数,比如-ac 1为单通道
-acodec copy 指定音频编码,若用参数copy是直接复制相应的流

对声音进行采样、量化过程被称为脉冲编码调制(Pulse Code Modulation),简称PCM。而由上文采样频率,采样位数,声道数三个概念,由下面公式得出在计算机中 PCM 文件所占用的存储空间大小:
PCM 音频数据大小 = (采样频率 * 采样位数 * 声道 * 时间)//8 (单位:Bytes)
由于 PCM 数据是最原始的音频数据,对于采样的数据完全无损,所以 PCM 数据虽然音质优秀但体积对于计算机的存储还是过于庞大;为了解决这个问题先后诞生了一系列的音频格式,这些音频格式运用不同的方法对音频数据进行压缩,其中有无损压缩(ALAC、APE、FLAC)和有损压缩(MP3、AAC、OGG、WMA)两种。

pcm -> wav
ffmpeg -f s16le -ar 44100 -ac 2 -i input_file.pcm output_file.wav

上述命令将输入的 PCM 文件转换为 WAV 文件,格式由 s16le PCM 变为 WAV。确保调整音频通道数和采样率以匹配您的输入 PCM 文件。
-f s16le 指定输入文件的格式,这里是 16 位有符号 PCM(short little-endian)。
-ar 44100 指定音频采样率,这个示例使用 44.1 kHz。您可能需要根据输入 PCM 文件的采样率进行调整。
-ac 2 指定音频通道数。这里是双声道,如果输入文件是单声道,请将其更改为 "-ac 1"。
-i input_file.pcm 指定输入 PCM 文件的路径。
output_file.wav 定义输出 WAV 文件的路径。

wav -> pcm
ffmpeg -i input_file.wav -f s16le -c:a pcm_s16le output_file.pcm

上述命令将输入的 WAV 文件转换为 PCM 文件,格式由 WAV 变为 s16le PCM。请注意,PCM 文件通常不包含元数据(如采样率、通道数等),因此在处理或播放时可能需要指定这些参数。在本示例中,这些参数将与源 WAV 文件保持相同。
-i input_file.wav 指定输入音频文件,即源 WAV 文件。
-f s16le 设置输出文件的格式,这里是 16 位有符号 PCM(short little-endian)。
-c:a pcm_s16le 设置音频编解码器为 16 位有符号 PCM。
output_file.pcm 定义输出 PCM 音频文件的路径。

m4a -> wav
ffmpeg -i input.m4a -acodec pcm_s16le -ac 1 -ar 44100 output.wav
将m4a文件转为wav文件,双通道,44.1kHz采样率。

aac/mp3 -> wav
ffmpeg -i input_file.aac -c:a pcm_s16le -ar 16000 -ac 2 output_file.wav
将 48 kHz 的双通道 AAC 文件转换为 16 kHz 的双通道 WAV 文件。

命令分析

ffmpeg命令分析-ac

posted @ 2021-05-20 17:03  Skye_Zhao  阅读(556)  评论(0编辑  收藏  举报