美文网首页
windows下FFmpeg使用方法

windows下FFmpeg使用方法

作者: 刘伟业 | 来源:发表于2018-11-04 22:42 被阅读0次

    一、Windows版本的安装

    windows发行版官网下载

    1. 到官网下载windows版本的ffmpeg,下载完后解压文件放到自己想入到的地方

      1. 复制 \bin 文件夹的目录
        [图片上传失败...(image-1ecded-1542091623251)]

        image.png
      2. 在“此电脑”上 右键——属性——高级系统设置 在高级选项卡点击 环境变量
        [图片上传失败...(image-aa7b6e-1542091623251)]

        image.png
      3. 系统变量下找到path,然后点击编辑,再点新建,将刚才复制的 \bin\ 地址粘贴进去
        [图片上传失败...(image-362ad5-1542091623251)]

        image.png

        5.windowr+R键,运行cmd,输入ffmpeg,若显示如下,则表示安装成功了
        [图片上传失败...(image-285f76-1542091623251)]

        image.png

      二、H.264编码

      FFmpeg转H.264gh ,官方建议两种速率控制模式用于一般用途:恒定速率因子(CRF)或双通道ABR。速率控制决定每帧使用多少位。这将确定文件大小以及分发质量的方式。

      恒定速率(CRF)模式

      CRF示例

      ffmpeg -i input.avi -c:v libx264 -preset slow -crf 22 -c:a aac -b:a 128k output.mkv
      
      
      • 输入文件 -i input.avi -i后面跟输入文件的路径,如果有空格,用""包起来

      • 编码方式`

        1. -c:v 设置视频编码的方式,可以用-vcode代替,后面跟libx264代表用libx264的方式编码
        2. -c:a 设置音频编码的方式,可以用 -acode 代替,后面跟aac代表用aac方式编码
        3. -b:a 设置音频码率,同样 -b:v设置视频码率 b代表bitrate
      • 选择CRF值
        -crf 选择crf的值,

        1. CRF标度的范围是0-51,其中0是无损的,23是默认值,51是最差的质量。较低的值通常会导致更高的质量,一般建议的范围是17-28。17或18在视觉上几乎无损,但它在技术上并不是无损的。
        2. CRF值是指数级的,因此增加CRF值+6会导致大约一半的比特率/文件大小,而-6会导致大约两倍的比特率。
        3. 如果输出看起来不错,那么可以尝试更高的值让视频体积变小,如果看起来不好,请选择较低的值来提高视频质量。

        CRF模式只关心视频质量,无法精确控制文件大小
        当输出文件大小不太重要时,此方法允许编码器尝试为整个文件实现特定的输出质量。一次编码便提供了最大的压缩效率。通过为每个帧调整所谓的量化器,为达到视频指定质量灵活地调动比特率。缺点是您不能告诉它控制文件大小或比特率,这意味着不建议使用此方法来编码流媒体。

      • 选择预设值
        -preset `选择如下预设值

        1. ultrafast
        2. superfast
        3. veryfast
        4. faster
        5. fast
        6. medium – 默认设置
        7. slow
        8. slower
        9. veryslow
        10. placebo –这个预设可以忽略,几本用不到了
          可以用-preset help来查看可用的预设参数,在crf模式下,如果预设值越快,因视频质量是固定的,这就导致视频的体积变大,减慢预设值可以减小视频体积,但牺牲编码时间。在双通道模式下,码率是固定的,越慢的预设可以带来越高的视频质量
      平均码率(二次编码ABR模式)

      如果您要定位特定的输出文件大小,并且帧与帧之间的输出质量不太重要,请使用此方法。
      官方不建议只使用一次编码ABR模式

      二次编码ABR模式示例

      ffmpeg -y -i input -c:v libx264 -b:v 1024k -pass 1 -an -f mp4 nul && ^
      ffmpeg -i input -c:v libx264 -b:v 1024k -pass 2 -c:a aac -b:a 128k output.mp4
      
      
      • 在第1和第2 遍中,分别使用-pass 1-pass 2选项。
      • 在第1遍中,输出到空文件描述符,而不是实际文件。(这将生成ffmpeg第二次传递所需的日志文件。)
      • 第1遍中,您需要指定一个输出格式(使用-f),该格式与您在第2阶段中使用的输出格式相匹配。
      • 在第1遍中,您可以通过指定-an不编码音频加快速度(n代表no)

      关于比特率的计算,这里举个例子
      您的视频长度为10分钟(600秒),输出为200Mb。由于比特率=文件大小/持续时

      (200 Mb * 8192 [将Mb转换为kb])/ 600秒= 2730 kb/s总比特率
      2730  -  128 kb/s(所需音频比特率)= 2602kb/s视频比特率
      
      

      三、利用批处理,批量转码

      当有大量视频需要转码时,可以使用如下命令行工具批量处理:

      for /r %v in (*.mp4) do (ffmpeg -i %v -c:v libx264  -preset slow -crf 28 -c:a copy "ffmpeg\%~nv.mp4")
      
      

      四、FFmpeg截取视频

      基本剪切方法
      ffmpeg -i input.mp4 -ss 00:01:00 -t 60 -c copy cut.mp4
      
      

      参数分析
      -ss 开始时间 -t持续时间 -c copy表示不转码直接复制编码。上段代码表示从00:10:00开始往后截取60秒的视频不转码保存为cut.mp4
      可以用-ss -to来截取某个时间到某个时间点,而不用-t设置持续时间
      这种方法由于不一定seek到关键帧上,所以很可能出现黑屏

      先seek后剪切
      ffmpeg -ss 00:01:00 -to 00:02:00 -i input.mp4 -c copy cut.mp4
      
      

      -ss-i之前,先进行seek操作,可以seek到关键帧上,避免出现黑屏

      加以在 -i前加上 -accurate_seek使剪切时间更加精确

      ffmpeg -ss 00:01:00 -to 00:02:00 -accurate_seek -i input.mp4 -c copy cut.mp4
      
      

      五、参考文档

      参考网站:

    相关文章

      网友评论

          本文标题:windows下FFmpeg使用方法

          本文链接:https://www.haomeiwen.com/subject/goodxqtx.html