一、X264

1)X264优点

  1. 码控算法质量较好,不会出现码率压不下来,就掉帧现象。
  2. 十种preset:"ultrafast", "superfast", "veryfast", "faster", "fast", "medium", "slow", "slower", "veryslow", "placebo"
  3. 七种profile:"baseline", "main", "high", "high10", "high422", "high444",
  4. 支持如下level。

2)X264缺点

  • 变帧率特性支持不是很友好。需要在调度测规避。在webrtc中合入X264编码器时,可以参考下面处理方式,规避X264变帧率问题。
int32_t H264EncoderImpl::SetRateAllocation(const BitrateAllocation& bitrate_allocation,uint32_t framerate) {if (bitrate_allocation.get_sum_bps() <= 0 || framerate <= 0)return WEBRTC_VIDEO_CODEC_ERR_PARAMETER;frame_rate_ = static_cast<float>(framerate);if (frame_rate_)target_bps_ = bitrate_allocation.get_sum_kbps()*(max_frame_rate_/frame_rate_);elsetarget_bps_ = bitrate_allocation.get_sum_kbps();return WEBRTC_VIDEO_CODEC_OK;
}
  • 不支持SVC功能(视频会议对网络丢包比较敏感。传统AVC编码丢失一帧,对整个GOP的解码都会有影响。SVC编码接收端发现网络丢包,可以通过按层丢帧,降低帧率,保证视频质量的流畅性。目前webrtc里面的vp8已经使用svc编码)。导致NACK + FEC + SVC一套比较完善的提升QOS的方法无法使用。降低了webrtc的抗丢包特性。
  • 不支持LTR功能,若是接收端 检测出长时间没有I帧解码,会发送一个大Size的IDR帧,对网络带宽影响比较大。

二、OpenH264

1)openh264优点

变帧率、SVC、LTR在openh264上都有实现。

2)openh264缺点

码控质量较差:1、运动和静止场景码率波动非常大;2、当画面运动复杂,码率压不下来,openh264会通过掉帧方式,压低码率。但是这样下来,视频流畅性就不那么完美。

具体参见WelsRcInitFuncPointers:

CheckFrameSkipBasedMaxbr:

三、总结

  1. X264是为点播,可接收一定延时的直播场景设计的。在实时音视频传输上没有花很大精力。
  2. openh264是专门为实时音视频传输场景打造的,但是码控模块的做的实在有点尴尬。对帧率有些挑剔的场景,就不太好用。

h264编码概述一(X264 VS openh264)相关推荐

  1. NDK开发-Android下摄像头YUV数据获取与H264编码(FFmpeg、x264)总结

    涉及知识点: Camera2 API使用 YUV420P与YUV420SP(NV21)格式转换 h264文件格式 FFmpeg工程 x264解码器 这次就先记录一下开发过程,因为牵涉到的很多技术问题都 ...

  2. H264编码器5( x264源代码简单分析:x264_slice_write() 与H264 编码简介)

    x264源代码简单分析:x264_slice_write() 来自:https://blog.csdn.net/leixiaohua1020/article/details/45536607 H264 ...

  3. 视频压缩H264编码原理介绍

    一.视频压缩编码概念 编码这一概念在通信与信息处理领域中广泛使用,其基本原理是将信息按照一定规则使用某种形式的码流表示与传输.常用的需要编码的信息主要有:文字.语音.视频和控制信息等. 1. 为什么需 ...

  4. Android视频编码--H264编码

    Android视频编码–H264编码 Android中的H264编码有两种编码方式: 硬编码 软编码 1.硬编码 Android中的H264硬编码主要是通过自身提供的API,调用底层的硬件模块实现编码 ...

  5. opencv-python支持h264编码 anaconda也可支持

    老版参考跳转 由于浏览器播放的视频常用h264编码格式,所以cv这边保存时希望能够以h264支持,但是奈何因为其开源许可,默认的包安装不支持h264. 开开心心指定h264报错: Could not ...

  6. 采集音频和摄像头视频并实时H264编码及AAC编码

    0. 前言 我在前两篇文章中写了DirectShow捕获音视频然后生成avi,再进行264编码的方法.那种方法有一些局限性,不适合实时性质的应用,如:视频会议.视频聊天.视频监控等.本文所使用的技术, ...

  7. 采集音频和摄像头视频并实时H264编码及AAC编码[转]

    0. 前言 我在前两篇文章中写了DirectShow捕获音视频然后生成avi,再进行264编码的方法.那种方法有一些局限性,不适合实时性质的应用,如:视频会议.视频聊天.视频监控等.本文所使用的技术, ...

  8. H264编码 封装成MP4格式 视频流 RTP封包

    From:http://www.cnblogs.com/ghw-NO1/archive/2012/08/28/2660848.html 一.概述 本文讲述的是对H264编码且封装成MP4格式的视频流进 ...

  9. opencv录制视频 python_Python-OpenCV录制H264编码的MP4视频

    前言 因最近项目需求涉及计算机视觉相关内容,需要实现在Python录制视频,并且录制完成后可在浏览器前端中进行视频回放的功能:特写下此篇文章以记录整体实现过程. 2019-08-02 更新 之前一直在 ...

最新文章

  1. find查找多个文件
  2. 带 sin, cos 的线段树 - 牛客
  3. s3cmd安装与使用
  4. 皮一皮:男女的不同...
  5. php生成唯一的加密串,hashids.php-master整数生成唯一字符串的加密库
  6. java服务端的 极光推送
  7. 我去,还在这样读写 excel 这也太低效了吧,好办法来了
  8. 对称加密算法原理--OpenSSL演示、iOS代码运用及CCCrypt安全隐患
  9. normalize函数_提取棋盘格角点函数解析
  10. java执行python返回null_[转]java调用python脚本以及通过Process.waitFor()直接调用python模块返回错误代码1的一种解决办法...
  11. docker 安装hadoop
  12. MySQL 事物的4种隔离级别
  13. java 调用plc程序_从老师傅那里偷学来的PLC宝贵经验!
  14. 水经注SOSO电子地图下载器官方下载V13.17.3官方版
  15. Flask项目基本流程
  16. WAP中推送技术的分析与设计(转)
  17. 用计算机判断函数单调性吗,高中数学函数单调性的判断方法(全)
  18. excel表格打印每页都有表头_一些关于Excel表格打印的技巧,工作中常用的都整理在这了...
  19. 如何设置幻灯片自动播放
  20. html点击打开word文档,javascript打开word文档的方法

热门文章

  1. “车联网”最强科普!据说它是未来五年5G兴衰的晴雨表?
  2. 实现聊天室的功能 :C/C++ socket通信,一个服务端,多个客户端,客户端之间可以群聊
  3. 《WCDMA空中接口技术》读书笔记5: R99 业务过程
  4. 超级好用的Mac软件
  5. 【细读源码】SpringBoot初始化实例中的重要方法getSpringFactoriesInstances
  6. 武大计算机学院软件工程专硕,2021年武汉大学软件工程(083500)硕士研究生招生信息_考研招生计划和招生人数 - 学途吧...
  7. Mocha Pro:工具栏
  8. 西门子S7-200 ppi协议解析
  9. Caused by: java.util.concurrent.TimeoutException: Heartbeat of TaskManager with id timed out.
  10. C# ABB机器人PC_SDK通讯