DJI运动相机拍摄的视频体积都比较大, 查了一下因为encoding是H264, 如果改成H265的话压缩率会高很多.
转换的命令是: (ref. stackoverflow)
ffmpeg -i input.mp4 -c:v libx265 -vtag hvc1 output.mp4
加上-qscale 0
可以保持quality (不过好像对h265不管用? ref. stackoverflow)
保留metadata
视频的metadata里有拍摄时间之类的内容, 可以用-movflags use_metadata_tags
或者-map_metadata 0
将其保存下来 (ref: stackexchange)
要查看一个视频文件的metadata的话:
$ sudo apt-get install mediainfo
$ mediainfo foo.mp4 > info.txt
例子:
$ time ffmpeg -i input.MP4 -c:v libx265 \
-movflags use_metadata_tags -map_metadata 0 \
-vtag hvc1 output.MP4
==> 用时370秒, 把一个416MB的文件压缩到了33MB
批量处理fish脚本
给converted文件加一个h256前缀:
for fn in (ls *.MP4)
if string match -rq -- "h265" $fn;
echo skipping $fn; # skip files with "h265" in the name
else;
ffmpeg -i $fn -c:v libx265 -movflags use_metadata_tags -map_metadata 0 -vtag hvc1 h265_$fn;
end
end
或者把converted的文件放进子文件夹"h265"里头:
mkdir h265
time for fn in (ls *.MP4)
ffmpeg -i $fn -c:v libx265 -movflags use_metadata_tags -map_metadata 0 -vtag hvc1 h265/$fn
end
Disqus 留言