一、合并两个视频
假设需要将 视频 01.Overall_Shallow_sea_out.mp4 复制几次达到重复播放的效果,可以使用如下ffmpeg命令。
ffmpeg.exe -f concat -safe 0 -i .\test.txt -c copy -y o1.mp4
test.txt里面的内容为:
file '01.Overall_Shallow_sea_out.mp4'
file '01.Overall_Shallow_sea_out.mp4'
file '01.Overall_Shallow_sea_out.mp4'
当然,如果需要合并两个不一样的视频,只需要修改file后面的名称即可
二、合并不同帧率的视频
.\ffmpeg.exe -i "concat:50fps.ts|30fps.ts|" -c copy all.ts
该命令可以实现将50fps和30fps的视频进行合并。目前测试只能成功实现 ts 视频格式的合并。
三、计算PSNR
ffmpeg -s 1920x1080 -pix_fmt bgra -i .\TextOnTreeInField_1920x1080_8bit_444p_src.rgb -s 1920x1080 -pix_fmt bgra -i .\TextOnTreeInField_1920x1080_8bit_444p_decompressed.rgb -lavfi psnr="stats_file=psnr.log" -f null -
ffmpeg可以计算两幅图像的psnr和mse,通过上面的命令可以实现,过滤器里面的东西后面解析。执行之后会得到psnr.log的文件
四、将一帧/几帧图片合成视频
-loop为ffmpeg中一个选项,表示的是循环输入一帧图像
ffmpeg -loop 1 -i photo.jpg -t 10 photo.mp4
下面是将几张图片合成视频的操作:
ffmpeg -f image2 -i img%d.jpg -r 25 video.mp4
格式化名称为:
ffmpeg -f image2 -i img%3d.jpg -r 25 video.mp4
五、修改视频码率
ffmpeg -i .\memc_search_range_test_3840x2160_24hz.mp4 -b:v 5M .\memc_search_range_test_3840x2160_24hz_5M.mp4
一般10M左右已经无损了,没必要更大的码率了
5M码率也可接受,码率代表每秒视频是多大的
码率越大最后体积也越大,视频质量相对较好
六、截取感兴趣区域
ffmpeg -i img -vf crop=960:0:960:2160 crop_out.png
其中,crop的四个参数分别代表: crop_w : crop_h : start_x : start_y,即截取宽、截取高、起点x坐标、起点y坐标
该命令可以截取视频和图片。
七、拼接两幅图片
直接拼接两幅图像的指令:
ffmpeg -i img1 -i img2 -filter_complex hstack out.png
如果需要拼接图像中的感兴趣区域则可使用如下指令:
ffmpeg -i cat.jpg -i dog.jpg -filter_complex "[0:v]crop=960:1920:0:0[img1];[1:v]crop=960:1920:0:0[img2];[img1][img2]hstack" phoutput.jpg