ffmpeg的使用笔记

FFmpeg是一款强大的开源编码-解码工具,包含ffmpeg.exe、ffplay.exe、ffprobe.exe三个文件,用于视频转换、播放和信息读取。本文介绍了如何使用FFmpeg进行视频格式转换、截取、设置帧率和比特率、转换音频、合成音视频、从设备录制视频以及处理DVD格式。通过调整参数,如提高比特率和选择合适的pix_fmt,可以优化视频质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常用的视频压缩编码格式(MPG MP4 AVI)都有商业专利,开源软件如OpenCV一般不提供。开源视频转换工具如VirtualDub等也是调用操作系统事先安装的包。而FFMpeg库是我们可以方便使用的开源编码-解码工具。

windows版本的FFmpeg的可执行程序为ffmpeg.exe ffplay.exe ffprobe.exe三个文件,分别用于编码转换、视频播放、读取视频文件信息,其中ffmpeg.exe是主要程序,大小约35MB,单个文件不依赖其他动态库。

典型指令如下:

使用默认参数对视频进行格式转换

ffmpeg.exe -i inVideo.avi outVide.mp4


截取视频中的一段

ffmpeg -i src.mp4 -ss 00:20:10 -t 00:01:00 -acodec copy -vcodec copy output.mp4


对raw文件进行转换

ffmpeg -i /tmp/test.yuv /tmp/out.avi


设定帧率

ffmpeg -i input.avi -r 30 output.avi
ffmpeg -i input.avi -framerate 30 output.avi


设定比特率

ffmpeg -i input.avi -b:v 64k -bufsize 64k output.avi


转换音频

ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2


合成音频和视频,并指定大小

ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg


转换DVD格式并压制,输入VOB文件,输出AVI格式的MPEG-4视频和mp3音频

ffmpeg -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.avi


直接从视频设备文件录制视频

ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg

其中,-f用来指定格式

将视频切分为每一帧保存为图片,自动编号命名,前补0

ffmpeg -i foo.avi -r 1 -s 1280x720 -f image2 foo-%03d.jpeg


将图片合并为视频,图片必须按指定格式编号,注意前导零

ffmpeg -f image2 -framerate 12 -i foo-%03d.jpeg -s 1280x720 foo.avi


合并多段视频

ffmpeg -f concat -i list.txt -c copy output.mp4

其中,list.txt是输入的文件列表,格式如下

 # this is a comment
 file '/path/Cam01/GOPR0009.MP4'
 file '/path/Cam01/GP010009.MP4'
 file '/path/Cam01/GP020009.MP4'


还可以对文件名进行匹配

ffmpeg -f image2 -pattern_type glob -framerate 12 -i 'foo-*.jpeg' -s 1280x720 foo.avi


我在视频处理工作中,用到了以下语句合并图像

ffmpeg.exe -y -f image2 -framerate 30 -i out\%06d.png -s 1920x720 out.mpg


其中-y是强制覆盖已存在文件

上面语句生成的mpg文件质量不高,换成MP4格式后略有提高。根本原因是mpg格式的默认比特率太低
可以采用

-qscale:v 2 -maxrate 64000k -bufsize 64000k
或
:-b:v 10000k -bufsize 64000k
-g 指定关键帧间隔

选项提高比特率、降低压缩率。其中qscale后面的数字越小压缩率越低,bufsize和maxrate必须同时指定

若使用mp4扩展名,则默认质量已经很好,但用于较新的yuv格式不被新的播放器支持,需要加入-pix_fmt yuv420p使用老版本,
最终指令为

ffmpeg.exe -y -f image2 -framerate 30 -i DstDir\%06d.png -s 1920x720 -pix_fmt yuv420p -g 60 icon.mp4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值