编码是将yuv文件转化成某种视频编码格式的操作,命令如下
ffmpeg -pix_fmt <yuv格式> -s <宽>x<高> -i <输入文件> -vcodec <编码的目标格式> <输入文件名>
举个例仔
ffmpeg -pix_fmt yuv420p -s 1920x1080 -i input.yuv -vcodec x264 out.h264
解析每个部分的参数:
-pix_fmt 代表着输入源的格式 yuv420p 代表 i420格式的limit range
如果要使用full range需要使用yuvj420p
-s 后面用x的形式输入对应的宽高
-i 输入的源文件
-vcodec 后面跟着使用的编码器,这里例子用的是x264, 还可以是h263,h263p 等
解码是将编码的文件转化为yuv格式的操作
ffmpeg -i <编码文件名> -c:v rawvideo -pixel_format <输出格式> <解码文件名>
注意的是ffmpeg会根据文件名的后缀判断输入和输出文件的格式,如果是yuv的话需要给定yuv的格式
举个例子
ffmpeg -i test_1080p.h263 -c:v rawvideo -pixel_format yuv420p out.yuv 解码h263到i420
ffmpeg -i test_1080p.h264 -c:v rawvideo -pixel_format yuv420p out.yuv 解码h264到i420
ffmpeg的专用的播放命令,如果是编码码流或者封装码流直接使用ffplay即可
ffplay input.h264
ffplay input.mp4
如果是yuv文件需要输入宽高
ffplay -video_size 1280x720 720p.yuv
常用将yuv文件从一个分辨率缩放到另一个分辨率的操作
ffmpeg -s:v 1920x1080 -r 25 -i input.yuv -vf scale=960:540 -c:v rawvideo -pix_fmt yuv420p out.yuv
使用-vf 滤镜的 scale 方法,指定缩放对方的分辨率大小
截取某一个文件的特定时间段的视频
ffmpeg -i test.mp4 -vcodec copy -acodec copy -ss 00:00:00 -to 00:39:00 test_cut.mp4 -y
拼接两个yuv文件, 但是前提必须确保两个yuv文件的分辨率大小是一致的,否则会出错
type a.yuv b.yuv > c.yuv
FFMPEG大LOGO镇楼