ffmpeg常用操作
无损压缩 mp4 视频
ffmpeg -i input.mp4 -vcodec h264 -acodec aac output.mp4
#压缩到更小文件
ffmpeg -i input.mp4 -vcodec libx265 -crf 28 output.mp4
#保留更好的质量
ffmpeg -i input.mp4 -vcodec libx264 -crf 20 output.mp4crf参数设置视频质量,影响文件大小。crf数值越低视频质量越高,常见的值为18-28,默认的值为23。 以 -vcodec libx265 -crf 28 命名压制的mp4视频所占空间明显变小且肉眼可见清晰度基本没有差别,如一个5G左右大小的视频可以压制到原来的一半左右大小。
截取视频
#截取从头开始的30s
ffmpeg -ss 00:00:00 -t 00:00:30 -i output.mp4 -vcodec copy -acodec copy split1.mp4
#截取从30s开始的30s
ffmpeg -ss 00:00:30 -t 00:00:30 -i output.mp4 -vcodec copy -acodec copy split2.mp4截取视频部分导出为GIF动图
#从视频中第二秒开始,截取时长为3秒的片段转化为 gif
ffmpeg -t 3 -ss 00:00:02 -i small.webm small-clip.gif
#压缩gif文件大小
ffmpeg -i small-clip.gif -vf scale=500:-1 -t 10 -r 10 image.gifffmpeg 直接导出的gif文件一般都比较大,微信这些社交软件通常都无法发送这个大的gif文件,Telegram 中大型GIF也只能以文件形式预览,无法在会话中直接查看,所以在移动端使用GIF还需进一步压缩。
iOS 可以使用 GIF Toaster 压缩GIF,安卓系统可以使用 GIF Maker
将mkv转为mp4
ffmpeg -i input.mkv -c copy -c:s mov_text output.mp4
软字幕 在文件中作为单独流包含的字幕。 播放器可以打开/关闭它们,并且不需要对视频流进行重新编码。
播放器对MP4中的定时文本软字幕的支持可能很差。
Telegram 自带播放器中无法正常显示字幕,Windows PotPlayer则可以正常显示字幕。
ffmpeg -i input.mkv -vf subtitles=input.mkv output.mp4
硬字幕 硬字幕被“刻录”到视频中,因此必须对视频进行重新编码。