通过ffmpeg实现将wav转为mp3格式.需要下载一个ffmpeg放到执行文件所在目录.
我ffmpeg的下载地址为:ffmpeg.exe下载-ffmpeg.exe32&64位下载免费版-旋风软件园
use ShellAPI;
{$R *.dfm}
procedure ConvertWavToMp3(const InputFile, OutputFile: string);
var
ExecuteInfo: TShellExecuteInfo;
FFmpegPath: string;
begin
// 确定ffmpeg.exe的路径,这里假设它已经在PATH环境变量中,否则需要指定完整路径
FFmpegPath := 'ffmpeg.exe';
ZeroMemory(@ExecuteInfo, SizeOf(ExecuteInfo));
ExecuteInfo.cbSize := SizeOf(ExecuteInfo);
ExecuteInfo.lpVerb := 'open';
ExecuteInfo.lpFile := PChar(FFmpegPath);
ExecuteInfo.lpParameters := PChar(Format(' -i "%s" -vn -acodec libmp3lame -aq 2 "%s"', [InputFile, OutputFile]));
ExecuteInfo.nShow := SW_HIDE; // 隐藏命令行窗口
// ExecuteInfo.hwnd := 0;
// 执行转换命令
if ShellExecuteEx(@ExecuteInfo) then
ShowMessage('转换成功.')
else
ShowMessage('转换失败: ' + SysErrorMessage(GetLastError()));
end;
ffmpeg
是一个功能强大的多媒体处理工具,它支持大量的输入和输出格式,以及多种编解码器。由于其功能的多样性,ffmpeg
的参数列表也非常丰富。以下是一些常用的 ffmpeg
参数和选项的概述:
基本参数
-i input_file
: 指定输入文件。-y
: 如果输出文件已存在,则覆盖它。-n
: 如果输出文件已存在,则不覆盖它。-c:v codec
: 设置视频编解码器(例如-c:v libx264
)。-c:a codec
: 设置音频编解码器(例如-c:a aac
)。-preset
: 用于 x264 视频编码器,指定预设值以平衡编码速度和质量(如veryfast
,fast
,medium
,slow
,veryslow
)。-crf
: 用于 x264 视频编码器,指定恒定速率因子(CRF),范围通常为 0-51,其中较低的值表示更高的质量。-b:v bitrate
: 设置视频比特率(例如-b:v 1M
)。-b:a bitrate
: 设置音频比特率(例如-b:a 128k
)。-s size
: 设置视频大小(例如-s 640x480
)。-aspect aspect
: 设置视频宽高比(例如-aspect 16:9
)。-r fps
: 设置帧率(例如-r 30
)。-g gop_size
: 设置 GOP(Group of Pictures)大小,对于 x264 编码器。-pix_fmt format
: 设置像素格式(例如-pix_fmt yuv420p
)。-threads n
: 设置线程数(用于并行处理)。-f format
: 强制设置输出格式(例如-f mp4
)。
输入/输出选项
-ss [time_off]
: 从输入文件中跳转到指定时间开始处理(例如-ss 00:00:10
)。-t [duration]
: 设置处理时长(例如-t 00:00:30
)。-map
: 选择输入文件的流进行映射到输出。-shortest
: 对于有多个输入的命令,以最短的输入时长作为输出时长。-segment_time
: 用于视频分割,指定每个片段的时长。-segment_list
: 对于视频分割,创建一个包含片段名称的列表文件。
过滤器(Filters)
ffmpeg
支持大量的视频和音频过滤器,用于转换、修改或增强媒体内容。过滤器通常在 -vf
(视频过滤器)或 -af
(音频过滤器)选项后指定。
-vf filter_graph
: 定义视频过滤器图(例如-vf "eq=brightness=0.1"
)。-af filter_graph
: 定义音频过滤器图(例如-af "volume=0.5"
)。
其他常用选项
-metadata
: 设置元数据(例如-metadata title="My Video"
)。-loglevel level
: 设置日志级别(例如-loglevel verbose
)。-stats
: 显示处理过程中的统计信息。-progress url
: 将进度信息发送到指定的 URL(通常是一个管道文件或 TCP 服务器)。-vsync method
: 视频同步方法(例如-vsync vfr
)。-async samples_per_second
: 音频同步方法(设置音频样本率)。
这只是一个非常简化的 ffmpeg
参数列表概述。由于 ffmpeg
的功能非常丰富,还有许多其他参数和选项可供使用。为了获得最准确和最新的信息,建议查阅 ffmpeg
的官方文档或使用 ffmpeg -h
命令查看帮助信息。