通过ffmpeg 将wav格式转为mp3格式.

通过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 命令查看帮助信息。

相关推荐
xmRao24 分钟前
Qt+FFmpeg 实现 PCM 音频转 AAC 编码
qt·ffmpeg·pcm
xmRao30 分钟前
Qt+FFmpeg 实现录音程序(pcm转wav)
qt·ffmpeg
阿里巴啦1 天前
python+yt-dlp开源项目,支持 YouTube, Bilibili, TikTok/抖音,快手 等多个平台的视频/音频/字幕下载/ai摘要等功能
python·ffmpeg·whisper·音视频·视频处理·ai摘要·音视频转录
来鸟 鸣间2 天前
linux下ffmpeg源码编译
linux·运维·ffmpeg
Echo_NGC22372 天前
【FFmpeg使用指南】Part 2:滤镜图架构与信号处理
架构·ffmpeg·音视频·信号处理
Echo_NGC22372 天前
【FFmpeg使用指南】Part 1:核心架构与媒体流处理
ffmpeg·音视频·媒体·视频
ssxueyi2 天前
用 Claude Code 从零开发自己的Direct3D 硬件加速播放器
ffmpeg·ai编程·directx·视频播放器·从零开始·claude code·csdn征文活动
Yan_uuu2 天前
ubuntu18.04 安装 x264、ffmpeg、nv-codec-hearers 支持GPU硬件加速
c++·图像处理·ubuntu·ffmpeg
runner365.git3 天前
做一个基于ffmpeg的AI Agent智能体
人工智能·ffmpeg·大模型
彷徨而立3 天前
【FFmpeg】理解 av_packet_from_data 和 av_packet_unref 接口
ffmpeg