ffmpeg的视频操作合集

-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------

申明: 这是一个ffmpeg的代码保存集,以后用到的鬼畜操作都会更新至此。

-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------

1、视频拆解成帧图

ffmpeg -i input.mp4 -r 25 output_folder/%05d.png -loglevel error
  1. -i:输入的视频,待拆解的视频;
  2. -r:视频的帧率;
  3. output_folder:帧图的存放地址;

-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------

2、插帧

fps=25的原视频插帧到fps=50的新视频。

ffmpeg -i input.mp4 -filter:v "minterpolate='mi_mode=mci:mc_mode=aobmc:me_mode=bidir:mb_size=8:search_param=16:scd_threshold=5:vsbmc=1:fps=48'" -b:v 50M output.mp4
  1. -i:输入的视频,待插帧的视频;
  2. fps=:后面指定的是输出的output.mp4的帧率,一般是input.mp4帧率的2倍;
  3. 插帧model详解如下:
“mi_mode”运动插补模式。接受以下值:

	 'dup':  复制上一帧或下一帧以插入新帧。
	 'blend':混合源帧。插值帧是上一帧和下一帧的平均值。
	 'mci':  运动补偿插补。选择此模式时,以下选项有效:
	 
		“mc_mode”运动补偿模式。接受以下值:默认模式是“ obmc”。
			‘obmc’:  重叠的块运动补偿。
			‘aobmc’:自适应重叠块运动补偿。根据相邻运动矢量的可靠性来自适应地控制窗口加权系数,以减少过度平滑。
			  

“me_mode”运动估计模式。接受以下值:默认模式为“ bilat”。

	“bidir”: 双向运动估计。针对每个源帧在向前和向后两个方向上估计运动矢量。
	“bilat”: 双边运动估计。直接为插值帧估计运动矢量。
	

-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------

3、多段视频合成一段视频

第一步:同级目录下新建input.txt文件,input.txt中的内容格式如下:引号内是待合成的视频名称,注意前后顺序;

file 'input-01.mp4'
file 'input-02.mp4'
file 'input-03.mp4'

第二步:

ffmpeg -f concat -i input.txt -c: copy output.mp4

-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------

4、升视频的色深比特率

注:将8bit视频的色深用抖动算法升为10bit视频,分两步操作。

第一步:

ffmpeg -i input.mp4 -b:v 50000k -c:v libx264  -color_range 1 -colorspace 1 -color_primaries 1 -color_trc 1 -pix_fmt yuv420p  -profile:v main -level 5.1 -preset faster -q:v 0 -s 3840x2160 -y -an output-s1.mp4
  1. -i:输入的视频,待升bit的原视频;
  2. -s:指定的输出视频的分辨率;

第二步:

ffmpeg -i output-s1.mp4 -b:v 50000k -vf "colorspace=bt709:space=bt2020ncl:trc=bt2020-10:primaries=bt2020:range=tv:format=yuv420p10:dither=fsb" -preset faster -q:v 0  -y -an output-s2.mp4
  1. -i:输入的视频,为第一步的输出视频;
  2. space=:将输出视频的色域转换为bt2020

-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------

5、视频的HDR处理

ffmpeg -i output-s2.mp4 -b:v 50M -c:v libx265 -preset faster -x265-params "level=5.1:keyint=100:colorprim=bt2020:transfer=arib-std-b67:colormatrix=bt2020nc:master-display=G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(10000000,50):max-cll=0,0" -vf "pad=3840:2160:0:0:black" -an -y hdr.mp4
  1. master-display:这个参数比较复杂,在支持HDR的4K显示屏上可看出色彩更加饱和,参数是需要人为尝试,得到你觉得最理想的画质;
  2. pad=xxxx:xxx:x:x:black:这是填补边界的参数,pad=3840:2160:0:0:black意味着如果新视频的分辨率不足4K,则用black色填补空缺的地方;
  3. hdr.mp4:输出视频的格式可为mp4,mov,ts

-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------

6、视频提取声音

ffmpeg -i input.mp4 -vn -ar 44100 -ab 256k -f mp3 src.mp3

-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------

7、视频加声音

第一种:有mp3文件,可用第六步从视频中提取音频mp3文件。

ffmpeg -i hdr.mp4 -i src.mp3 -b:v 50000k -bf 1 -b_strategy 0 -ar 44100 -ab 256k -c:v libx265 -x265-params "level=5.1:frame-threads=8:keyint=100:colorprim=bt2020:transfer=arib-std-b67:colormatrix=bt2020nc:master-display=G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(10000000,50):max-cll=0,0"  -preset faster -c:a copy  -y final.mp4

第二种:有声音的视频1,加上一组序列帧,生成有声音的结果

ffmpeg -y -i input_1.mp4 -r 25 -i input_pic/%05d.png -map 0:a? -map 1:v -r 25 -c:v libx264 -b:v 8M -pix_fmt yuv420p -c:a aac -b:a 192k -ar 48000 -strict -2 result.mp4 -loglevel error

-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------

8、视频加字幕

ffmpeg -i input_video.mp4 -i input_pic.png -filter_complex "[1:v]scale=180:72 ,[0:v] overlay=20:30" output.mp4 -y
  1. 添加字幕——可以是图片也可以是视频,更换第二个-i后的输入即可;
  2. scale是指视频或图片的尺寸大小—— width * height;
  3. overlay是指视频或图片的摆放位置——x:y;
  4. [1:v] 是第二个 -i 数据作为贴图, [0:v] 是第一个 -i 数据作为贴图;

-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------

9、虚化视频边缘

ffmpeg -i input_video.mp4 -vf "split[a][b];[a]scale=720:1280,crop=x=40:y=320:w=512:h=640, boxblur=10:5[main];[main][b]overlay=(W-w)/2" output.mp4 -y

-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------

10、添加转场

在视频1与视频2中间添加一段长达2s的转场

ffmpeg -i input_1.mp4 -i input_2.mp4 -filter_complex xfade=transition=fade:duration=2:offset=2 output.mp4 -y
  1. transition:后面有多种model可供选择,可在ffmpeg官网中查询到

-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------

猜你喜欢

转载自blog.csdn.net/zzZ_CMing/article/details/109023324