文章目录
mp4与yuv互转
1. 从yuv转mp4
ffmpeg.exe -s 360x640 -i "in.yuv" -vcodec libx265 -pix_fmt yuv420p "out.mp4"
可不用设置-r 25
帧率。
切记:ffmpeg无法设置265的有些参数,例如:
-vcodec libx265 -qp 18
无效果-thread 1
无效果
需要使用-x265-params
将参数传给x265
执行,下面是几个例子:
- 取消265的deblock功能
-x265-params "no-deblock=1"
- 规定265使用单线程
-x265-params "pools=1"
- 规定265的qp
-x265-params "qp=0"
- 多个参数
-x265-params "no-deblock=1:qp=0"
可观察ffmpeg调用x265的输出看究竟参数设置对没有:
2. 从mp4转yuv
ffmpeg -i %1 -c:v rawvideo -pix_fmt yuv420p out.yuv
ffmpeg -i %1 -c:v rawvideo -pix_fmt yuvj420p out.yuv
抽帧相关
1. png变yuv
ffmpeg -i thumb%04d.jpg -s 360x640 -pix_fmt yuv420p thumb_360x640.yuv
2. png变mp4
与png变yuv近似,只是多了编码参数,这里我设置qp=18,且关闭了x265的Inloop去块。
ffmpeg -i thumb%04d.png -c:v libx265 -x265-params "no-deblock=1:qp=18" -pix_fmt yuv420p out.mp4
3. mp4变png
ffmpeg -i in.mp4 out/out_%04d.png
一般是变png,如果是jpg的话,那就是有损压缩了,可以使用-q:v 2
,参数范围为2-31,2代表最高质量,31代表最低质量。参考stackoverflow。
4. yuv变png
ffmpeg -s 1920x1080 -i in_1920x1080.yuv out/out_%04d.png
对比效果
1. mp4的side-by-side
ffplay.exe -f lavfi "movie=1.mp4,scale=iw/2:ih[v0];movie=2.mp4,scale=iw/2:ih[v1];[v0][v1]hstack"
2. yuv的side-by-side
使用工具YUView
3. mp4要套娃
切记:会被编码压缩
两个视频并排在一起
ffmpeg -i 1.mp4 -i 2.mp4 -filter_complex "[0:v:0][1:v:0]hstack=inputs=2" -c:v libx265 out.mp4
三个视频并排在一起
ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -filter_complex "[0:v:0][1:v:0][2:v:0]hstack=inputs=3" -c:v libx265 out.mp4