最近用ffmpeg进行了很多视频操作,现在记录下来备忘。
ffmpeg :A complete, cross-platform solution to record, convert and stream audio and video.
ffmpeg 分割视频
ffmpeg -i input.flv -ss 00:00:50 -t 00:10:00 -c copy output.flv
其中-ss
后接开始时间-t
后接持续时间。-c copy
表示不经转码,直接进行流复制。
ffmpeg 合并视频
ffmpeg -f concat -i list.txt -c copy output.mp4
其中list.txt
为视频列表文件
file 'a1.mp4'
file 'a2.mp4'
ffmpeg 转码(编解码)
目前常见的视频编码是H264等,但H265编码的视频也逐渐多起来。H265是更为先进的编码方式,可以用较小的文件大小编码更清晰的视频,唯一缺点是编码慢,使用libx265
进行编码慢到怀疑人生,新的N卡已经支持硬编码,旧的不行。依据使用经验,在默认参数下可以减小到原来的20%,但速度只有2.5x
左右。
可以用ffmpeg -codecs
查看可用的编解码器。
其中H264部分的输出。
DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_crystalhd h264_v4l2m2m h264_vdpau h264_cuvid ) (encoders: libx264 libx264rgb h264_nvenc h264_omx h264_v4l2m2m h264_vaapi nvenc nvenc_h264 )
ffmpeg -i input.flv -c:v libx265 out.mp4
使用N卡加速H264编解码,使用ffmpeg -hwaccels
查看可用的硬件加速。
ffmpeg -hwaccel cuvid -i input.mp4 -c:v h264_cuvid -c:v h264_nvenc output.np4