H.264有四种画质级别,分别是baseline, extended, main, high:

  • 1、Baseline Profile:基本画质。支持I/P 帧,只支持无交错(Progressive)和CAVLC;
  • 2、Extended profile:进阶画质。支持I/P/B/SP/SI 帧,只支持无交错(Progressive)和CAVLC;(用的少)
  • 3、Main profile:主流画质。提供I/P/B 帧,支持无交错(Progressive)和交错(Interlaced), 也支持CAVLC 和CABAC 的支持;
  • 4、High profile:高级画质。在main Profile 的基础上增加了8x8内部预测、自定义量化、 无损视频编码和更多的YUV 格式;

  H.264 Baseline profile、Extended profile和Main profile都是针对8位样本数据、4:2:0格式(YUV)的视频序列。在相同配置情况下,High profile(HP)可以比Main profile(MP)降低10%的码率。 根据应用领域的不同,Baseline profile多应用于实时通信领域,Main profile多应用于流媒体领域,High profile则多应用于广电和存储领域。

下图清楚的给出不同的profile&level的性能区别。

profile 主要参数:

Level 主要参数:

ffmpeg如何控制profile&level

ffmpeg -i input.mp4 -profile:v baseline -level 3.0 output.mp4ffmpeg -i input.mp4 -profile:v main -level 4.2 output.mp4ffmpeg -i input.mp4 -profile:v high -level 5.1 output.mp4

如果ffmpeg编译时加了external的libx264,那就这么写:

ffmpeg -i input.mp4 -c:v libx264 -x264-params "profile=high:level=3.0" output.mp4

从压缩比例来说,baseline< main < high ,对于带宽比较局限的在线视频,可能会选择high,但有些时候,做个小视频,希望所有的设备基本都能解码(有些低端设备或早期的设备只能解码baseline),那就牺牲文件大小吧,用baseline。自己取舍吧!

苹果的设备对不同profile的支持。

2. 编码效率和视频质量的取舍(preset, crf)
除了上面提到的,强行配置biterate,或者强行配置profile/level,还有2个参数可以控制编码效率。
一个是preset,一个是crf。
preset也挺粗暴,基本原则就是,如果你觉得编码太快或太慢了,想改改,可以用profile。
preset有如下参数可用:

ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow and placebo.
编码加快,意味着信息丢失越严重,输出图像质量越差。

CRF(Constant Rate Factor): 范围 0-51: 0是编码毫无丢失信息, 23 is 默认, 51 是最差的情况。相对合理的区间是18-28.
值越大,压缩效率越高,但也意味着信息丢失越严重,输出图像质量越差。

举个例子吧。

ffmpeg -i input -c:v libx264 -profile:v main -preset:v fast -level 3.1 -x264opts crf=18

流媒体技术学习笔记之(十六)H264编码profile level控制相关推荐

  1. H264编码profile level控制

    背景知识 先科普一下profile&level.(这里讨论最常用的H264)  H.264有四种画质级别,分别是baseline, extended, main, high:  1.Basel ...

  2. OpenCV学习笔记(十六)——CamShift研究 OpenCV学习笔记(十七)——运动分析和物体跟踪Video OpenCV学习笔记(十八)——图像的各种变换(cvtColor*+)imgproc

    OpenCV学习笔记(十六)--CamShift研究 CamShitf算法,即Continuously Apative Mean-Shift算法,基本思想就是对视频图像的多帧进行MeanShift运算 ...

  3. OpenCV学习笔记(十六):直方图均衡化:equalizeHist()

    OpenCV学习笔记(十六):直方图均匀化:equalizeHist() 参考博客: 直方图均衡化的数学原理 直方图匹配的数学原理 直方图均衡化广泛应用于图像增强中: 直方图均衡化处理的"中 ...

  4. QT学习笔记(十六):setwindowflags的属性总结

    QT学习笔记(十六):setwindowflags的属性总结 此枚举类型用于为小部件指定各种窗口系统属性.它们是不常用的,但在一些情况下是必要的.其中一些标志取决于底层窗口管理器是否支持它们. 主要类 ...

  5. MATLAB学习笔记(十六)

    MATLAB学习笔记(十六) 一.常微分方程数值求解 1.1 常微分方程数值求解的一般概念 1.2 常微分方程数值求解函数 1.3 刚性问题 一.常微分方程数值求解 1.1 常微分方程数值求解的一般概 ...

  6. python数据挖掘学习笔记】十六.逻辑回归LogisticRegression分析鸢尾花数据

    但是很多时候数据是非线性的,所以这篇文章主要讲述逻辑回归及Sklearn机器学习包中的LogisticRegression算法 #2018-03-28 16:57:56 March Wednesday ...

  7. [go学习笔记.第十六章.TCP编程] 3.项目-海量用户即时通讯系统-redis介入,用户登录,注册

    1.实现功能-完成用户登录 在redis手动添加测试用户,并画出示意图以及说明注意事项(后续通过程序注册用户) 如:输入用户名和密码,如果在redis中存在并正确,则登录,否则退出系统,并给出相应提示 ...

  8. Slicer学习笔记(十六)图像配准

    Slicer学习笔记(十六)分割配准 1.记录配准过程: 2.尝试不同的配准方法,找最好配准效果的方法 generic rigid (all) 3D MR T1, monomodal (brain) ...

  9. python分析鸢尾花数据_python数据挖掘学习笔记】十六.逻辑回归LogisticRegression分析鸢尾花数据...

    但是很多时候数据是非线性的,所以这篇文章主要讲述逻辑回归及Sklearn机器学习包中的LogisticRegression算法 #2018-03-28 16:57:56 March Wednesday ...

  10. 【OS学习笔记】十六 保护模式四:进入保护模式与在保护模式下访问内存的汇编代码

    本文记录的是之前四篇文章所对应的汇编代码.四篇文章分别是: [OS学习笔记]十二 现代处理器的结构和特点 [OS学习笔记]十三 保护模式一:全局描述符表(GDT) [OS学习笔记]十四 保护模式二:段 ...

最新文章

  1. jwt只能用ajax么,使用JWT进行登录认证的一些问题
  2. 浅谈上、下拉电阻的作用/什么是拉电流和灌电流[转]
  3. python最小公倍数 菜鸟_最小公倍数 golang + python
  4. react的bind(this)
  5. java代码轻量级锁_Java轻量级锁原理详解(Lightweight Locking)
  6. 一种基于邻域的聚类算法
  7. 利用计算机语言进行并行性描述,有没有一种语言可以利用大规模并行计算机?...
  8. 互联网+大赛作品_【快讯】智物联获第二届中国工业互联网大赛优秀作品奖
  9. English Note_1_传统学习英语的误区
  10. 你们身边有没有程序媛?
  11. 关于UIAlertAction如何修改sheet上的字体颜色
  12. psp能装安卓软件吗_PSP模拟器下载_安卓PSP模拟器下载「ppsspp模拟器」-太平洋下载中心...
  13. proteus 的使用
  14. 卡内基梅隆计算机金融,卡耐基梅隆大学计算金融项目申请要求是什么?
  15. php获取拼音首字母排序,php 如何获取字符串拼音首字母 - strtoupper
  16. 从k8s集群主节点数量为什么是奇数来聊聊分布式系统
  17. 线性代数(二十四) : 行列式的展开式—拉普拉斯公式
  18. npm安装淘宝镜像和查看淘宝镜像配置
  19. 永信至诚助中国航信2015年信息安全技能竞赛圆满举行
  20. jieba textrank关键词提取 python_五款中文分词工具在线PK: Jieba, SnowNLP, PkuSeg,THULAC, HanLP...

热门文章

  1. Android检测版本更新
  2. 为Android GridView 设置行背景
  3. 进程间通信(三)共享内存和信号量
  4. Unity 利用FFmpeg实现录屏、直播推流、音频视频格式转换、剪裁等功能
  5. python selenium 元素定位总结(转载)
  6. poj 1269 题解
  7. 解决tsc.exe 已退出 代码为 1
  8. C语言控制台窗口图形界面编程(八):鼠标事件
  9. 解决2010版办公软件打不开从系统中导出的Excel表格
  10. 基础教程之Running Man奔跑