基于 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 流,并且只能发送到一个客户端。
folder
FFmpeg SDK Windows 版本 视频转码(源代码) 预估大小:136个文件
file
avformat-54.dll 2.41MB
file
avutil-51.dll 139KB
file
avcodec-54.dll 13.09MB
file
avfilter-2.dll 891KB
file
FileStreamEncode.exe 91KB
file
postproc-52.dll 158KB
file
avdevice-53.dll 342KB
file
swscale-2.dll 301KB
file
swresample-0.dll 36KB
file
encoder.ini 291B
file
使用说明.txt 1KB
file
编译步骤.doc 77KB
file
FileStreamEncode.h 2KB
file
stdafx.cpp 145B
file
CFilterNetSender.cpp 6KB
file
FileStreamEncode.suo 70KB
file
Resource.h 917B
file
FileStreamEncode.suo.old 13KB
file
FileStreamEncode.cpp 4KB
file
MyStatusBar.h 790B
file
FilePlayGraph.cpp 20KB
file
UpgradeLog.XML 5KB
file
FileStreamEncode.manifest 701B
file
icon1.ico 2KB
file
Toolbar.bmp 1KB
file
FileStreamEncodeDoc.ico 1KB
file
Thumbs.db 11KB
file
FileStreamEncode.ico 1KB
file
FileStreamEncode.rc2 368B
file
all-wcprops 865B
file
VisionRGBCapture.ico.svn-base 53B
file
VisionRGBCaptureDoc.ico.svn-base 53B
file
Toolbar.bmp.svn-base 53B
file
icon1.ico.svn-base 53B
file
VisionRGBCapture.ico.svn-base 1KB
file
VisionRGBCaptureDoc.ico.svn-base 1KB
file
Toolbar.bmp.svn-base 1KB
file
icon1.ico.svn-base 2KB
file
VisionRGBCapture.rc2.svn-base 368B
file
VisionRGBCapture.manifest.svn-base 701B
file
entries 1KB
file
UpgradeReport.xslt 12KB
file
UpgradeReport_Minus.gif 69B
file
UpgradeReport.css 3KB
file
UpgradeReport_Plus.gif 71B
file
stdafx.h 2KB
file
FileStreamEncode.sln 892B
file
FileStreamEncode.aps 31KB
file
VideoDisplayWnd.cpp 1KB
file
dshowutil.h 2KB
file
INIFile.cpp 1KB
file
stdint.h 6KB
file
version.h 2KB
file
vsrc_buffer.h 2KB
file
avfilter.h 36KB
file
buffersink.h 3KB
file
avfiltergraph.h 7KB
file
avcodec.h 2KB
file
_mingw.h 8KB
file
swresample.h 5KB
file
swscale.h 12KB
file
avdevice.h 3KB
file
postprocess.h 3KB
file
md5.h 1KB
file
rational.h 4KB
file
avassert.h 2KB
file
parseutils.h 5KB
file
timestamp.h 2KB
file
base64.h 2KB
file
pixfmt.h 15KB
file
bswap.h 3KB
file
aes.h 2KB
file
random_seed.h 1KB
file
file.h 2KB
file
dict.h 5KB
file
imgutils.h 5KB
file
samplefmt.h 6KB
file
fifo.h 4KB
file
common.h 11KB
file
eval.h 6KB
file
pixdesc.h 7KB
file
intreadwrite.h 14KB
file
timecode.h 5KB
file
intfloat_readwrite.h 1KB
file
mem.h 6KB
file
crc.h 1KB
file
avstring.h 7KB
file
intfloat.h 2KB
file
avutil.h 7KB
file
error.h 3KB
file
cpu.h 3KB
file
sha.h 2KB
file
attributes.h 4KB
file
log.h 6KB
file
opt.h 24KB
file
lzo.h 2KB
file
lfg.h 2KB
file
adler32.h 1KB
file
mathematics.h 4KB
file
avconfig.h 170B
file
audioconvert.h 6KB
file
version.h 3KB
file
avformat.h 65KB
file
avio.h 15KB
file
inttypes.h 6KB
file
version.h 2KB
file
xvmc.h 6KB
file
dxva2.h 2KB
file
vaapi.h 4KB
file
avfft.h 3KB
file
vda.h 4KB
file
avcodec.h 147KB
file
vdpau.h 3KB
file
FileStreamEncode.sln.old 923B
file
FileStreamEncode.vcproj.7.10.old 8KB
file
FileStreamEncode.rc 10KB
file
MainFrm.cpp 38KB
file
SampleGrabberCallback.cpp 856B
file
INIFile.h 428B
file
CFilterNetSender.h 2KB
file
MainFrm.h 2KB
file
FileStreamEncode.vcproj.MICROSOF-A91FE5.Administrator.user 1KB
file
avutil.lib 43KB
file
avformat.lib 29KB
file
swscale.lib 50KB
file
avdevice.lib 2KB
file
avfilter.lib 36KB
file
postproc.lib 3KB
file
avcodec.lib 54KB
file
swresample.lib 4KB
file
VideoDisplayWnd.h 1KB
file
FilePlayGraph.h 3KB
file
MyStatusBar.cpp 2KB
file
dshowutil.cpp 20KB
file
SampleGrabberCallback.h 1KB
file
FileStreamEncode.vcproj 8KB
...
rar 文件大小:6.24MB