FFmpeg使用总结

FFmpeg使用总结

音视频基础概念

比特率:描述每秒钟输出多少KB的参数,单位Kbps,8kbps=8Kbits/s=1KB/S,即8kbps是每秒视频占用1KB磁盘空间。同理音频文件也存在比特率。压缩同一个视频,视频编码率越大,文件体积越大,视频画质越好,马赛克越少。MP3的比特率一般为8~320Kbps。

视频大小

ntsc:408P,对应分辨率为720*480,建议码率为1800Kbps

snits:对应分辨率640*480

hd720:720P,对应分辨率为1280*720,建议码率为3500Kbps

hd1080:1080P,对应分辨率为1920*1080,建议码率为8500Kbps

可变码率(VBR):动态比特率编码,指编码器的输出码率可以根据编码器输入源信号的复杂度自适应调整,目前是达到输出质量保持不变。VBR适于存储,不适合流式传输,它能有效利用有限空间。

固定码率(CBR):指编码器输出码率固定,不适合存储,CBR对于复杂内容可能没有足够码率进行编码,从而导致质量下降,同时会在简单内容部分浪费一些码率。

帧数:每秒钟播放的图片数(fps)。高的帧率可以得到更流畅、更逼真的画面。但是帧率很大会浪费图形处理的能力,因为显示器不能以更快的速度更新,则超过刷新率的帧率就浪费掉。同一视频,统一码率情况下,帧数越多,画质越不好。因为每张画面会分担每秒有限的文件体积,如果画面越多,那么每张画面所能表现的内容越有限。一般30fps就基本流畅,50fps就有行云流水感觉,很难区分60fps与100fps区别。

分辨率:画面大小,单位是像素。和编码率的关系:越高的分辨率,需要越高的编码率。因为图像细节多,需要文件体积大。同一码率,画面越大,图像马赛克程度越明显。

采样率:每秒钟对音频信号的采样次数,采样率越高声音还原度越高,声音越自然,单位Hz。一般音频文件采样率44100Hz,即1秒钟采样44100次。低于这个值,声音会有明显损失,高于这个值,人耳难以分辨,同时会增加音频文件所占用的空间。

FFmpeg功能及命令

ffmpeg功能:实现视频采集、视频格式转化、视频截图、视频添加水印、视频切片、视频录制、视频推流、更改音视频参数等

ffmpeg语法

ffmpeg -I [输入文件] … [输出文件]

对应参数

-h:帮助信息

-i filename:输入文件

-t time:设置处理持续时间

-ss time:设置其实时间

-b:v bitrate:设置视频码率

-b:a bitrate:设置音频码率

-r fps:设置帧率

-s wxh:设置帧大小,格式wxh

-vcodec:设置视频编码器

-acodec:设置音频编码器

-ar freq:设置音频采样率

-ac num:指定音频声道数

-ab num:制定音频码率

-fromats:显示可用的格式,编解码协议

-f fmt:强迫采用格式fmt

-y:覆盖输出文件

-n:不覆盖输出文件,如果输出文件存在则退出

-b:设置比特率

-aspect num:设置画面比例

-title string:设置标题

-author string:设置作者

-copyright string:设置版权

-comment string:设置评论

FFmpeg常用命令

音频拼接

ffmpeg -i "concat:test1.mp3|test2.mp3" -acodec copy output.mp3

注意:拼接前两个音频应该为一样的格式

查看ffmpeg支持的格式

ffmpeg -formats

将视频保存成对应的图片

ffmpeg -i test try.%d.jpg

提取视频部分

ffmpeg -i test -vcodec copy -an test.mp4

提取音频部分

ffmpeg -i test -acodec copy -vn heh.aac

ffmpeg -i test -acodec aac -vn output.aac

截取视频

ffmpeg -ss 00:00:20 -t 00:00:05 -i test -vcodec copy -acodec copy output.mp4

ffmpeg -ss 00:00:10 -i test -to 00:00:20 -c copy -copyts cut.mp4

转换视频编码格式

ffmpeg -i test -vcodec mpeg4 output.mp4

缩放视频

ffmpeg -i test -vf scale=960:540 output.mp4

将视频保存yuv

ffmpeg -i input.mp4 output.yuv

合并视频(中间转换一下)

ffmpeg -i test1-qscale:v 1 inter1.mpg

ffmpeg -i test2-qscale:v 1 inter2.mpg

cat inter1.mpg inter2.mpg > inter.mpg

ffmpeg -i inter.mpg -qscale:v 2 output.avi

调整播放速度

ffmpeg -i test1 -vf  "setpts=0.25*PTS" test4.mp4(快4倍)

ffmpeg -i test1 -vf  "setpts=4*PTS" test4.mp4(慢4倍)

调整视频分辨率/音频比特率/音频比特率/音频声道数等

ffmpeg -i test1 -s 640x480 -b 500k -vcodec h264 -r 29.97 -acodec aac -ab 48k -ac 2 new_out.mp4

给视频添加台标水印

ffmpeg -i test1 -i CCTV10.png -filter_complex overlay test1.mp4

在右上角添加

ffmpeg -i test1 -i CCTV10.png -filter_complex overlay=W-w output.mp4

在左下角添加

ffmpeg -i test1 -i CCTV10.png -filter_complex overlay=0:H-h output.mp4

在右下角添加

ffmpeg -i test1 -i CCTV10.png -filter_complex overlay=W-w:H-h output.mp4

设置坐标点(视频的左上角为原点)

ffmpeg -i test1 -i CCTV10.png -filter_complex overlay=100:100 output.mp4

截取视频图像

ffmpeg -i test1 -r 1 -q:v 2 -f image2 pic-%03d.jpeg

-r:每秒取几帧

-q:存储jpeg的图像质量,一般2是高质量

从第20s~30s截取10帧图像

ffmpeg -i test1 -ss 00:00:20 -t 10 -r 1 -q:v 2 -f image2 pic-%03d.jpeg

把视频和图像帧合成视频

ffmpeg -i test1 -i hehe%3d.jpeg -s 1024x768 -vcodec mpeg4 hehe.avi

把视频文件导出jpg序列

ffmpeg -i test1 hehe.%d.jpg

将jpg图像转换成yuv图像

ffmpeg -I hehe001.jpeg -s 1280x720 -pix_fmt yuv420p hehe.yuv

将图像合成视频

ffmpeg -i hehe%d.jpg output.mp4

转换视频码率

ffmpeg -i test1 -b:v 2000k output.mp4

设置最大转换码率

ffmpeg -i test1 -b:v 2000k -bufsize 2000k -maxrate 2500k output.mp4

设置输出视频帧数

ffmpeg -i test1 -r 24 output.avi

强制输入文件1帧,输出文件24帧

ffmpeg -r 1 -i test1 -r 24 output.avi

设置视频画面比例

ffmpeg -i test1 -aspect 4:3 output.mp4

裁剪视频

ffmpeg -i test1 -vf crop=100 output.mp4

ffmpeg -i test1 -vf crop=iw/3:ih:0:0 output.mp4

将原视频缩小一半,并裁剪画面正中的正方形区域

ffmpeg -i test1 -vf scale=iw/2:-1,crop=ih output.mp4

scale=width:height iw/ih 表示输入宽度/宽度,-1表示按输入尺寸等比自动计算

crop=width:height:x:y x:y指定裁剪的左上角位置,默认值为(in_w-out_w)/2和(in_h-out_h)/2,即输出视频为原视频的中央区域

猜你喜欢

转载自blog.csdn.net/yzhang6_10/article/details/81349363