基于 FFmpeg SDK Windows 版本的视频转码工具及源码解析

基于 FFmpeg SDK Windows 版本的视频转码工具

本工具利用 FFmpeg SDK (Windows 版本) 实现媒体文件到 MPG、MP4、MKV、TS 等格式的转码,并支持通过 UDP 协议发送转码后的 TS 流。

工作原理

  1. 解码: 工具首先利用 DirectShow 解码插件对输入的视频文件进行解码,提取图像和音频帧。
  2. 编码: 解码后的数据被送至 FFmpeg 模块进行编码,生成目标格式的文件。
  3. 输出: 编码后的数据输出至指定路径的文件或通过 UDP 协议发送。

参数说明

  • bitrate_mode: 编码模式,0 为 CBR (固定码率), 1 为 VBR (可变码率),默认为 CBR。
  • quant: 质量系数 (1-32),值越小质量越高,仅在 VBR 模式下有效。
  • outputformat: 输出文件路径及格式 (由扩展名指定),例如:c:encoder.ts。
  • videocodec: 视频编码器,可选 mpeg2, mpeg4, h264。
  • audiocodec: 音频编码器,可选 mp2, mp3, aac。
  • video_bitrate: 视频码率,单位为 BPS。
  • audio_bitrate: 音频码率,单位为 BPS。
  • gopsize: 关键帧间隔 (1-200),例如:gopsize=100 表示每 100 帧插入一个关键帧。
  • output_to_udp: 目标 UDP 地址和端口,例如:192.168.1.102:1234,仅支持 TS 流输出且只能发送至单个客户端。

常见转码方案

以下代码示例演示了如何配置参数实现不同格式的转码:

// 转码为 MP4 文件
outputformat = c:encoder.mp4 
videocodec = mpeg4 
audiocodec = aac 

// 转码为 MPG 文件
outputformat = c:encoder.mpg 
videocodec = mpeg2 
audiocodec = mp2 

// 转码为 TS 文件
outputformat = c:encoder.ts 
videocodec = h264 
audiocodec = aac 

// UDP 发送 TS 流
output_to_udp = 192.168.1.102:1234 
outputformat = c:encoder.ts 
videocodec = h264 
audiocodec = aac

源码下载

FFmpeg SDK Windows 版本可从 FFmpeg 官网下载:http://ffmpeg.zeranoe.com/builds/

注意

  • 系统需安装 DirectShow 解码插件以确保视频和音频解码正常。
  • UDP 发送功能仅适用于 TS 流,并且只能发送到一个客户端。
rar 文件大小:6.24MB