由于iPhone拍摄视频尺寸较大,所以将视频转码后保存

转码命令

1
2
3
4
5
6
7
8
# transcode cpu
ffmpeg -noautorotate -i xxxx.mov -c:v h264 -b:v 8500k -s 1920x1080 -c:a aac -b:a 128k -map_metadata 0 out.mp4

# vaapi
ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 -i in.mov -vf 'format=nv12,hwupload,scale_vaapi=w=1920:h=1080' -c:v h264_vaapi -b:v 8500k -c:a aac -b:a 128k -map_metadata 0 out-vaapi.mp4

# qsv Hevc qsv decode + qsv scaling to h264 qsv encode
ffmpeg -init_hw_device qsv=hw -filter_hw_device hw -c:v hevc_qsv -i in.mov -vf hwupload=extra_hw_frames=64,format=qsv,scale_qsv=w=1920:h=1080 -c:v h264_qsv -b:v 8500k -c:a aac -b:a 128k -map_metadata 0 out-qsv.mp4

视频拼接

1
2
3
4
5
6
7
# list.txt
file 1.mov
file 2.mov
file 3.mov
...
# 拼接,注意视频格式要一致
ffmpeg -f concat -i concat.txt -c copy -metadata creation_time="2020-07-28T02:32:39.000000Z" concat-out.mp4

常用参数说明

1
ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...
optiondescexample
-noautorotate忽略元数据中的rotate,配合保留元数据
-i要转码的文件in.mov
-c:v视频编码h264, hevc, h264_vaapi…
-b:v视频比特率1080p - 8500k, 720p - 3500k, 480p - 1800k
-s分辨率1920x1080, vaapi/qsv在-vf参数中设置
-r帧率60, 30, 24…
-c:a音频编码aac, mp3…
-b:a音频比特率128k
-metadata设置元数据creation_time="2020-07-28T02:32:39.000000Z”
-map_metadata元数据为 0 保留全部元数据,详细用法参考ffmpeg文档
-y直接覆盖输出文件

参考