x264参数分类

预设值

在libx264中有一些参数是预先设置好的,直接使用就可以,不用自己去设置。

  • preset fast/slow
    preset的参数主要调节编码速度和质量的平衡,有ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、placebo这10个选项,从快到慢,要根据自己的需求去设置,然后编码器就会根据我们的要求去数据编码结果。
    例如设置very fast,是最主要用在实时通讯的领域,编码器在编码时追求的目标是快,质量就可以下降一些,这是因为实时通讯最主要的就是要满足实时性。
    如果是一个点播系统,涉及到转码时,就要使用veryslow,这时质量很高,也就是清晰度很高,此时可以牺牲速度。
  • tune
    这个参数与质量是密切相关的,主要配合视频类型和视觉优化的参数,或特别的情况。主要有film电影和图片等类型。
    tune与preset不是互斥的,也就是说这俩参数可以一起使用,但是如果使用了veryfast,追求速度·,就没必要使用这个参数了。
    tune的使用是在preset之后,其他参数之前。

帧相关参数

例如参考帧的数量,B帧的数量

  • keyint/min-keyint
    keyint就是GOP size,一个GOP有多大,可以容纳多少帧。
    这个参数越大,则可以容纳的B帧就越多,获得的压缩率就越高。
    如果是实时实时传输时怕丢包,引起卡顿,可以将这个参数设置的小一些。

    min_keyint 场景切换的时候如果发现变化率超过了scenecut设定的值并且超过了min_keyint的值就插入一个I帧

  • scenecut
    场景切换的时候变化多少算切换,有的是60%的不同算作切换,有的是80%。

  • bframes
    连续B帧的数量 一般不超过3帧

  • ref
    参考帧的数量,解码器中存放的参考帧的数量,可以设置为3帧,5帧等

  • no-deblock/block
    不使用/使用去块滤镜,

  • no-cabac
    是否使用cabac压缩

码流的控制

例如设置码流的大小,动态码流和静态码流。

  • Qp 关注量化器,
    比crf码流大且与bitrate/crf互斥。一般而言crf都能代替QP模式,不过QP因为完全不需要预测所以它会运行地更快些。

  • Bitrate
    关注码流,无法控制质量

  • crf
    关注质量,默认是23,数值越低越好

量化器的取值
Qmin 默认为10
Qmax 默认为51
Qpstep 两帧之间量化器的最大变化,默认为4

编码分析

例如宏块的划分。进行宏块查找时的搜索算法。

  • partitions
    默认是p8x8,b8x8,i8x8,i4x4,也可以根据需要设置16x16,8x16等等。
    说明:H.264在压缩前会被切分为16×16大小的宏块。这些块可被进一步切分成更小的块,利用此参数,可以控制不同的帧类型(I、P、B)开启更细的帧切分(8×8、4×4),具体参数如下:
    I帧:i8x8、i4x4;
    P帧:p8x8(会同时开启p16x8和p8x16)、p4x4(会同时开启p8x4和p4x8)
    B帧:b8x8(会同时开启b18x8和b8x16)
    另外,也可以设置为’none’和’all’。一般而言,开启p4x4不会带来多少的质量提升,而且它极其耗时,是个性价比比较低的选项。

  • ME运动评估算法

  • 说明:设置全局的运动预测方法,有以下5种选择:

dia(四边形搜索) —— 最简单的搜索,从最乐观的情况开始预测,在运动矢量的上下左右分别偏移一个像素对比,选择其中最好的,循环直至找不到更匹配的运动矢量。

hex(六边形搜索) —— 和菱形差不多的策略,不同的是,它在6边形的6个顶点上进行rang-2的搜索,它实现了比dia有效率地多的搜索而几乎不会使用更多的耗时,它是普通编码任务一个很好的选择。

umh(不均匀的多六边形搜索) —— 显著地比hex要慢,但它尝试进行复杂多六边形的搜索,以避免错过那些难以找到的运动矢量。与hex和dia不同的是,merange参数直接任意大小控制umh的搜索半径。

esa(全局搜索) —— 高度优化的全局智能搜索,在最佳预测器的merange范围内进行运动搜索。在全局面进行运动向量的算术对比,虽然计算过程并不慢,但好事仍比umh有显著提升,而且并不会带来太多质量方面的提升。所以,对于日常的编码任务来说,它不是特别有用。

tesa(变换全局搜索) —— 使用一种算法,效果近于对全局的每个运动矢量进行Hadamard 变换比对。搜索方式上和esa很像,但是效果比esa好一点点,耗时也多一点点。

输出

  • SAR
    设置输出的宽高比

  • fps
    帧率

  • leve
    设置输出的规格

在使用ffmpeg命令行时可以发现一些参数命令有些许改变,这是因为,ffmpeg对这些参数进行了再封装。

ffmpeg -vsync 1
-async 1
-i xxx.flv
-b:v 200k
-maxrate 250k
-bufsize 400k
-pix_fmt yuv420p
-vcodec libx264
-coder 1
-refs 3
-bf 5
-flags +loop -deblock -1:1
-partitions i4x4 + i8x8+p8x8+b8x8
-me_method umh
-g 60
-keyint_min 30
-qmin 0 -qmax 69 -qdiff 2
out.mp4

vsync 视频同步
async 音频同步
-b:v 200k 控制视频码流是200k
-maxrate 最大码流
-bufsize 缓冲区大小
-pix_fmt 原始数据的格式
-vcodec 使用的编码库
-coder 1 使用熵编码 cabac
-refs 3 参考帧的数量是3
-bf b帧的最大数量是5
-flags +loop -deblock 使用去块化的滤波器
-partitions 编码前被切分的宏块
-me_method 宏块匹配算法
-g gop的大小
-keyint_min gop的最小值
-qmin 0 -qmax 69 -qdiff 2 qbdiff就是Qpstep

我们可以通过下面两个网址查看更多的参数

http://www.chaneru.com/Roku/HLS/X264_Settings.htm
https://sites.google.com/site/linuxencoding/x264-ffmpeg-mapping

视频编码解码(x264参数)相关推荐

  1. Vulkan Video实现GPU加速视频编码/解码

    正文字数:929  阅读时长:2分钟 Vulkan是一套跨平台的图形API,由Khronos组织牵头进行制定,普遍被看作是OpenGL的后继者,目前版本已经来到1.2.175,仍然在不停地进行更新,其 ...

  2. ---WebCam网络摄像头12 ---图像编码解码,视频编码解码

    1.图像格式与图像编码,图像显示 图像被拍摄后,一般都会按照某种编码方式被压缩,使得占用更少的空间来存放(或传输).然后再播放的时候又会使用想用的解码方式将图像还原成源图像(指显示器认可的图像格式,一 ...

  3. 使用FFMPEG——4.2.2版本实现提取视频编码解码文件,ffmpeg基础学习。

    FFMPEG基础学习 视频解码,并且输出到文件. 我通过雷霄骅的博客学习FFMPEG,在学习过程中发现"雷神"的代码由于版本的问题,很多代码已经无法在FFMPEG--4.2.2版本 ...

  4. 视频编码解码基本知识

    最近在做摄像头视频的数据处理,得到了网络相机的.h264格式的数据,需要做解码处理,由于对视频的编码解码原理不太了解,因此查找资料总结一下 为什么要进行视频编码? 视频编码又称为视频压缩,伴随着用户对 ...

  5. 视频编码解码(H264编码实战)

    基本步骤 打开编码器 在打开编码器时,要设置一些参数,例如具体使用的哪一个编码器,编H264时要使用libx264,编H265时要使用libx265. 还需要设置GOP,码流大小.分辨率宽和高也需要设 ...

  6. Intel和AMD的最新视频编码/解码基准测试

    鉴于英特尔可扩展视频技术(SVT)开源视频编码器以及其他开源视频编码器/解码器的最新更新,以下是AMD 霄龙 7742 双路服务器在与英特尔竞争的情况下与之抗衡的最新表现,同时让我看看AMD在企业级服 ...

  7. php接收不到ajax请求参数,我是否需要在ajax请求和接收该请求的php之间编码/解码查询参数?...

    人们,如果你不是绝对确定你在做什么,请不要使用这个代码 此代码受到灾难性安全漏洞的影响,因此除非您绝对确定没有邪恶的人会访问它,否则请不要使用它. 发送: jQuery.ajax({ type: 'p ...

  8. 集显也能硬件编码:Intel SDK 各种音视频编解码学习详解

    http://blog.sina.com.cn/s/blog_4155bb1d0100soq9.html INTEL MEDIA SDK是INTEL推出的基于其内建显示核心的编解码技术,我们在播放高清 ...

  9. 【Android RTMP】安卓直播推流总结 ( 直播服务器搭建 | NV21 图像采集 | H.264 视频编码 | PCM 音频采集 | AAC 音频编码 | RTMP 包封装推流 )

    文章目录 一. 安卓直播推流专栏博客总结 二. 相关资源介绍 三. GitHub 源码地址 四. 整体 Android 直播推流数据到服务器并观看直播演示过程 Android 直播推流流程 : 手机采 ...

最新文章

  1. pandas基于时序数据计算模型预测推理需要的统计数据(累计时间、长度变化、变化率、方差、均值、最大、最小等):范围内的统计量、变化率、获得数据集最后的几条数据的统计量、变化率、获得范围内的统计量
  2. 使用随机森林(Random Forest)进行特征筛选并可视化
  3. java获取正则表达式_JAVA 正则表达式(获取)
  4. iOS---搜索功能
  5. C++中如何区分引用和取地址符号?
  6. 计算机二级c选择题题库,C程序设计选择题题库【2018计算机二级考试题库:《C++》选择题练习】...
  7. POJ3614防晒霜 这个贪心有点东西(贪心+优先队列)
  8. 前端学习(2894):列表组件的拆分和样式编写
  9. ggplot2 | ggplot2作图语法入门
  10. Win10家庭版之Docker ToolBox,Win10家庭版升级专业版
  11. CommonLibrary——框架通用工具库
  12. 学历真的改变能命运? | 数据告诉你
  13. 市场竞争力法则:以小博大,虽败犹荣
  14. RTF转HTML(<div>标签)格式的方法(java)
  15. JZOJ5444. 【NOIP2017提高A组冲刺11.2】救赎
  16. 集合查询和查询结果处理
  17. 程序猿头头(object与数组的简单应用)
  18. mybatis系列一:入门篇
  19. [4G5G专题-79]:流程 - 4G LTE 寻呼流程Paging
  20. wi-fi 频宽设置_为客人设置Wi-Fi的10种方法

热门文章

  1. Excel找回打开密码过程
  2. 理解Java heap内存和Java direct内存
  3. sge安装 centos 安装 gridengine
  4. 明明安装了模块/包,Python提示无包/模块/报错
  5. agv机器人无人仓系统-开源agv控制系统opentcs
  6. 四川华巨同诚:拼多多怎么规避店铺降权的问题
  7. DIY空气检测仪:攀藤G5ST分析仪
  8. 学堂在线数据结构上6
  9. ZwSe2团队共识V0.1
  10. dubbo监控中心安装