Skip to main content

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.mp4

    crf参数设置视频质量,影响文件大小。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.gif

    ffmpeg 直接导出的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

    硬字幕 硬字幕被“刻录”到视频中,因此必须对视频进行重新编码。