美文网首页FFmpegiOS音视频开发音视频专辑
《FFmpeg Basics》中文版-17-预设编解码器

《FFmpeg Basics》中文版-17-预设编解码器

作者: 张芳涛 | 来源:发表于2018-04-13 11:32 被阅读26次

    写在前面

    如果您对音视频技术感兴趣,可以订阅我的专题:音视频专辑
    也可以关注我的简书账户: 张芳涛,我后期会发布更多的音视频以及图像处理方面的文章。

    正文

    为了简化在某些编解码器中使用的大量选项,我们可以使用预设置文件,其中的选项更好地格式化并保存以便将来使用。

    关于预设文件的介绍

    预置文件是用于各种选项的文本文件,包括特定的编解码器。它们包含键=值对,每个选项和注释都包含在以#符号开始的行中。
    指定预设置文件的选项

    选项 编码类型 描述
    -apre audio 对于音频,在Windows上最好使用-fpre选项
    -spre subtitle 对于字幕,在Windows上最好使用-fpre选项
    -vpre video 对于视频,在Windows上最好使用-fpre选项
    -fpre any codec 对于任何编解码器类型,该值都是包含选项的文件名

    一个简单的预设置文件mpeg2。ffpreset只能包含1个选项,例如:

    vcodec=mpeg2video
    

    要用mpeg2video编解码器编码一些输入,我们可以使用以下命令:

    ffmpeg -i input -fpre mpeg2.ffpreset -q 1 MPEG2_video.mpg
    

    下一个命令用flv (Flash视频)编解码器编码在网络上的使用:

    ffmpeg -i input.avi -vcodec flv -f flv -r 29.97 -vf scale=320:240 ^ -aspect 4:3 -b:v 300k -g 160 -cmp dct -subcmp dct -mbd 2 -flags ^ +aic+mv0+mv4 -trellis 1 -ac 1 -ar 22050 -b:a 56k output.flv
    

    该命令很长,并且在命令行上对各种更改进行编辑并不容易,因此我们将其修改为名为flv的预设置文件。ffpreset将包含与flv编解码器相关的选项(括号中的注释不是文件的一部分):

    vcodec=flv (视频编解码器)
    b:v=300k (视频比特率)
    g=160 (图片组大小)
    mbd=2 (macroblock决策算法)
    flags=+aic+mv0+mv4 (aic - h263高级内部编码;总是尝试使用mv=<0,0>;mv4 -使用macroblock的4运动矢量)
    trellis=1 (rate失真优化量化)
    ac=1 (声道数)
    ar=22050 (音频采样率)
    b:a=56k (音频比特率)

    现在,具有相同结果的命令将是:

    ffmpeg -i input.avi -f flv -r 29.97 -vf scale=320:240 -aspect 4:3 ^ -cmp dct -subcmp dct -fpre flv.ffpreset output.flv
    

    预置文件的例子

    FFmpeg文档提供了几种常见的预置,并将其描述如下:

    libx264-ipod320.ffpreset libx264-ipod640.ffpreset
    vcodec=libx264
    vprofile=baseline
    level=13
    maxrate=768000
    bufsize=3000000
    vcodec=libx264
    vprofile=baseline
    level=30
    maxrate=10000000
    bufsize=10000000

    libvpx - 1080 p.ffpreset预置文件

    vcodec=libvpx
    g=120
    lag-in-frames=16
    deadline=good
    cpu-used=0
    vprofile=1
    qmax=51
    qmin=11
    slices=4
    b=2M
    #ignored unless using -pass 2
    maxrate=24M
    minrate=100k
    auto-alt-ref=1
    arnr-maxframes=7
    arnr-strength=5
    arnr-type=centered

    libvpx - 1080 p50_60.ffpreset预置文件

    vcodec=libvpx
    g=120
    lag-in-frames=25
    deadline=good
    cpu-used=0
    vprofile=1
    qmax=51
    qmin=11
    slices=4
    b=2M
    #ignored unless using -pass 2
    maxrate=24M
    minrate=100k
    auto-alt-ref=1
    arnr-maxframes=7
    arnr-strength=5
    arnr-type=centered

    libvpx - 360 p.ffpreset预置文件

    vcodec=libvpx
    g=120
    lag-in-frames=16
    deadline=good
    cpu-used=0
    vprofile=0
    qmax=63
    qmin=0
    b=768k
    #ignored unless using -pass 2
    maxrate=1.5M
    minrate=40k
    auto-alt-ref=1
    arnr-maxframes=7
    arnr-strength=5
    arnr-type=centered

    libvpx - 720 p.ffpreset预置文件

    vcodec=libvpx
    g=120
    lag-in-frames=16
    deadline=good
    cpu-used=0
    vprofile=0
    qmax=51
    qmin=11
    slices=4
    b=2M
    #ignored unless using -pass 2
    maxrate=24M
    minrate=100k
    auto-alt-ref=1
    arnr-maxframes=7
    arnr-strength=5
    arnr-type=centered

    libvpx - 720 p50_60.ffpreset预置文件

    vcodec=libvpx
    g=120
    lag-in-frames=25
    deadline=good
    cpu-used=0
    vprofile=0
    qmax=51
    qmin=11
    slices=4
    b=2M
    #ignored unless using -pass 2
    maxrate=24M
    minrate=100k
    auto-alt-ref=1
    arnr-maxframes=7
    arnr-strength=5
    arnr-type=centered

    相关文章

      网友评论

        本文标题:《FFmpeg Basics》中文版-17-预设编解码器

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