zoukankan      html  css  js  c++  java
  • 转:MediaCoder H.264格式编码参数设置及详解

    转: http://mediacoder.com.cn/node/81

    由于现在大部分视频转码都选择H.264格式进行编码,同时CUDA编码的画质还达不到x264软编码的质量(如果你对画质无要求,可以直接忽略该教程。)所以该教程对Mediacoder H.264格式编码参数设置进行一次详解,希望对画质有一定要求编码爱好者有所帮助。

    视频选项栏界面:

    视频质量/码率比例 可选百分比,选择是否对原始视频码率进行压缩。如果对画质要求较高,建议选择100%,即不对原始视频码率进行压缩。

    码率模式:设置转换视频时所采用的编码方式。可选项:

    1. 平均码率模式;

    2. 固定质量模式;

    3. 恒定码率模式;

    4. 恒定量化参数;

    5. 2次编码模式;

    6. 3次编码模式;

    建议:选择固定质量模式 即对原始视频画质质量进行固定,编码后视频大小不可控。

    格式:设置转换后临时的视频文件(未与音频文件封装之前)的格式。可选项:XviD、H.264、MPEG1、MPEG2、MPEG4、Theora、Flash Video、Dirac Video、Windows Media Video、RealMedia、H.263、H.263+、H.261、MS-MPEG4-V2、DV Video、Motion JPEG、Lossless JPEG、Huffyuv、Snow、AMV、Raw Video
    建议:选择H.264
    (注意:格式的选择会影响下面容器的选择,不是所有的格式都能封装到一个容器中的!)
    容器:最后进行封装时使用的容器,如XXXX.AVI就是使用的AVI作为容器。可选项:Default、AVI、MP4、Matroska、MPEG1、MPEG2、MPEG2-TS、Flash Video、ASF、3GP、3GP2、MOV、MJPEG、RealMedia、DV Forma、OGG、NUT、PMP、Raw Stream
    建议:选择MP4(MP4具有良好的播放兼容性,iphone、ipad等均可以直接点播)如果对兼容性没要求,建议选择MKV
    (注意:很多转换任务一开始就报有关容器的错误,是因为混流软件对转换后的音频文件或视频文件无法混流所致.具体MediaCoder的混流器能封装什么格式的视频文件和音频文件,请参考其他有关资料!)
    复制视屏流:当勾选参数时,MediaCoder不会对原始视频进行转换,而是直接无损提取。
    建议:不勾选 

    编码器:设置MediaCoder对视频编码时所使用的编码器。可选项:MEncoder、FFmpeg、x264、JM Encoder、XviD、Theora Encoder、Dirac、WM Encoder、VFW Encoder、AMV Encoder、Stream Dumper、Frame Dumper、x264 Remote
    建议:选择x264  对画质有要求的同学无视后面的吧,目前用CPU软编码还是无奈的唯一选择。
    (注意:只有不勾选自动选择后才能选择以上编码器。不正确选择会导致转换失败.)

    来源:设置MediaCoder对原视屏解码时所使用的解码方式。可选项:Bypass、MPlayer、MEncoder、FFmpeg、WM Decoder、JM Decoder、AviSynth、File Stream
    建议:勾选自动选择 
    (注意:只有不勾选自动选择时才能选择以上解码方式,不正确的选择会导致文件转换失败!)

    x264编码器选项栏界面:

    规格:压缩时使用规格模式。可选项:Auto、Baseline、Main、High、High10。具体各规格概况如下图:(图片来源于网络)

    建议:选择Main及以上(考虑到编码后视频的兼容性,不建议选择Main以下的规格。如果你对编码时间无要求,同时又是画质的骨灰级发烧友,那请你选择High及以上。)

    级别:表示编、解码等级
    建议:选择级别4.0 
    预设:x264为我们提供了预设这么一个选项,总共有placebo、veryslow、slower、slow、medium、fast、faster、veryfast、ultrafast、custom这几个预设,不同的预设编码出来的视频效果自然不同,当然编码时间也大不相同。
    如果您的CPU好,或者视频时间较短,码率和分辨率较低,请尽可能使用较高的预设,如果视频时间较长,码率和分辨率较低,或者您的CPU较为一般,可以适当降低预设来帮助您压制。以我来说,我压1080P一般用slower。有骨灰玩家说了:“那我选择custom呢?怎么设置呢?”好吧,给大家些资料参考一下吧,篇幅有限,各个参数请大家自己查阅相关资料了。

    运动估算模式:--me:对全像素块动态预测搜索的方式,可选项:

    Diamond:菱形搜索;
    Hexagonal:正六边形搜索;
    Uneven Multi-Hexagon:可变半径六边形搜索;
    Exhaustive:全面搜索;
    Hadamard Exhaustive:用Hadamard方式进行全面搜索,比Exhaustive更慢。
    建议:选择Uneven Multi-Hexagon
    (注意:建议设为Uneven Multi-Hexagon;Exhaustive和Hadamard Exhaustive实在太慢了,而且画面质量提高极不明显。除非你不怕浪费时间且追求高质量画面的骨灰级玩家并且很相信自己机器配置那么就选Hadamard Exhaustive吧!)。
    范围:运动估算半径:--merange:4-64。计算机对像素块进行预测搜索的半径。
    建议:设置为16

    参考帧数:参考帧数:--ref:最大参考帧数,范围0-16。该参数对质量和压缩比都有提高
    建议:设置大于1
    子像素优化::--subme:动态预测和分区方式,可选项1-9
    1:用全像素块进行动态搜索,对每个块再用快速模式进行四分之一像素块精确搜索
    2:用半像素块进行动态搜索,对每个块再用快速模式进行四分之一像素块精确搜索
    3:用半像素块进行动态搜索,对每个块再用质量模式进行四分之一像素块精确搜索
    4:用快速模式进行四分之一像素块精确搜索
    5:用质量模式进行四分之一像素块精确搜索
    6:进行I、P帧像素块的速率失真最优化(rdo)
    7:进行全部帧像素块的速率失真最优化
    8:进行I、P帧运动矢量及块内部的速率失真最优化
    9:进行全部帧运动矢量及块内部的速率失真最优化

    建议:选择7
    (注意:该选项选择的数值越大画面质量越好,而编码的速度越慢!)

    优化:对特定视频进行算法优化。选项有:normal(普通)、film(电影)、animation(动画)、grain(颗粒)、stillimage(静态图像)、psnr(PSNR测试)、ssim(SSIM测试)、fastdecode(快速解码)、zerolatency(零延迟)。

    建议:一般选择normal。

    B帧数:--bframes:在I帧与P帧之间可插入B帧数量的最大值,范围0-16。

    直观的说,对于大多数视频,绝大多数的冗余资源在离帧最近的位置被编码。 这就是说,只要设置这个值超过4或者5,就会增加编码时间,同时带来的价值并不大。 我通常使用的值是4.
    建议:设置大于1

     

        上述就是Mediacoder H.264格式编码参数设置的一些有关建议,当然高级选项里还有很多对视频编码画质和编码效率有关的选项,这里就不一一给大家解释了。如果感兴趣的话,多多查阅一些相关资料吧。祝大家编码愉快!

  • 相关阅读:
    第二节.NET两种交互模式:c/s和b/s
    python自动登录代码
    关于C# webapi ,接口返回字符串和json格式 ,返回值中有反斜杠
    利用java内部静态类实现懒汉式单例
    Linux,Ubuntu,Mint 环境下 navicat 乱码问题
    如何在Linux中使用命令行卸载软件
    Linux安装Oracle JDK替换OpenJDK详解
    【踩坑】利用fastjson反序列化需要默认构造函数
    基于 Markdown 编写接口文档
    Gradle里面两个 依赖管理插件,可以不用关心 具体jar版本号
  • 原文地址:https://www.cnblogs.com/jhj117/p/5455812.html
Copyright © 2011-2022 走看看