ffmpeg命令行记录

文章目录

    • mp4与yuv互转
      • 1. 从yuv转mp4
      • 2. 从mp4转yuv
    • 抽帧相关
      • 1. png变yuv
      • 2. png变mp4
      • 3. mp4变png
      • 4. yuv变png
    • 对比效果
      • 1. mp4的side-by-side
      • 2. yuv的side-by-side
      • 3. mp4要套娃


mp4与yuv互转

1. 从yuv转mp4

ffmpeg.exe -s 360x640 -i "in.yuv" -vcodec libx265 -pix_fmt yuv420p "out.mp4"

可不用设置-r 25帧率。

切记:ffmpeg无法设置265的有些参数,例如:

  1. -vcodec libx265 -qp 18无效果
  2. -thread 1无效果

需要使用-x265-params将参数传给x265执行,下面是几个例子:

  1. 取消265的deblock功能 -x265-params "no-deblock=1"
  2. 规定265使用单线程 -x265-params "pools=1"
  3. 规定265的qp -x265-params "qp=0"
  4. 多个参数 -x265-params "no-deblock=1:qp=0"

可观察ffmpeg调用x265的输出看究竟参数设置对没有:ffmpeg命令行记录_第1张图片

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

你可能感兴趣的:(学习笔记)