webrtc默认选择的是vp8编解码,要修改为默认h264编解码,则需要编码和解码都修改,需要做到下面三步

编译支持

编译时候增加属性 proprietary_codecs,设为true
例如:
/./usr/bin/gn gen out/release --args=‘proprietary_codecs=true target_os=“linux” target_cpu=“x64”’

编码修改:

修改media/engine/internal_encoder_factory.cc文件里的std::vector InternalEncoderFactory::SupportedFormats()函数,将h264编码放在supported_codecs队列里的第一个位置

解码修改

修改config

修改 third_party/chromium/config/chromium/linux/x64/config.h文件,增加h264 decoder支持,将0改为1
#define CONFIG_H264_DECODER 1

将h264 decoder需要的文件编译进去

修改webrtc/src/third_party/ffmpeg/ffmpeg_generated.gni文件,
使得编译时候包含下面的文件。

ffmpeg_c_sources += [
“libavcodec/cabac.c”,
“libavcodec/h2645_parse.c”,

以及

ffmpeg_c_sources += [
“libavcodec/x86/h264_qpel.c”,
“libavcodec/x86/h264chroma_init.c”,

根据我自己的环境,我在if判断时候增加了: || (use_linux_config && current_cpu == “x64”)

支持h264 decoder和parse

修改third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavcodec/下面的codec_list.c和parser_list.c,增加相应值:

— a/chromium/config/Chromium/linux/x64/libavcodec/codec_list.c
+++ b/chromium/config/Chromium/linux/x64/libavcodec/codec_list.c
@@ -15,4 +15,5 @@ static const AVCodec * const codec_list[] = {
&ff_pcm_s32le_decoder,
&ff_pcm_u8_decoder,
&ff_libopus_decoder,

  •   &ff_h264_decoder,
    

    NULL };
    diff --git a/chromium/config/Chromium/linux/x64/libavcodec/parser_list.c b/chromium/config/Chromium/linux/x64/libavcodec/parser_list.c
    old mode 100644
    new mode 100755
    index f81fbe8…16b6527
    — a/chromium/config/Chromium/linux/x64/libavcodec/parser_list.c
    +++ b/chromium/config/Chromium/linux/x64/libavcodec/parser_list.c
    @@ -6,4 +6,5 @@ static const AVCodecParser * const parser_list[] = {
    &ff_vp3_parser,
    &ff_vp8_parser,
    &ff_vp9_parser,

  •   &ff_h264_parser,
    

    NULL };

使用h264解码

同样修改media/engine/internal_decoder_factory.cc文件里的GetSupportedFormats函数,将h264codec放到formats列表里的第一位

结束

按照编译支持里的命令,进行重新编译,即默认使用了h264编解码

webrtc默认使用h264编解码相关推荐

  1. CrossWalk WebView添加支持WebRTC及H264编解码

    前言 1.WebView简介 WebView是Android平台上的一个非常重要的系统组件,用于将一个显示浏览器页面的窗口嵌入到应用程序,并提供一组接口让开发者定制一些页面加载及JavaScript对 ...

  2. WebRTC android 端支持H264编解码

    一.WebRTC源码中默认使用的H264编解码的库 1.WebRTC源码的video_coding模块中,包含了H264编解码相关的类 打开画红线的两个头文件,分别可以看到解码类中导入了ffmpeg的 ...

  3. 音视频开发系列--H264编解码总结

    一.概述 H264,通常也被称之为H264/AVC(或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC) 对摄像头采集的每一帧视频需要进行编码,由于视频中存在空间和时间的冗余,需要 ...

  4. H264编解码SPS、PPS参数说明

    H264编解码参数说明 一.H264码流分层 1.NAL层 ①.如何判断帧类型(是图像参考帧还是I.P帧等)? ②. 帧格式 ③. [SPS格式解析代码分析 ParseAndRewriteSps方法 ...

  5. ffmpeg H264 编解码配置

    ffmpeg H264编解码前面有文章介绍下,本文主要介绍一些参数配置. 编码: int InitEncoderCodec( int iWidth, int iHeight) {AVCodec * p ...

  6. 音视频系列--H264编解码总结

    一.概述 H264,通常也被称之为H264/AVC(或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC) 对摄像头采集的每一帧视频需要进行编码,由于视频中存在空间和时间的冗余,需要 ...

  7. TightVNC H264编解码(一)

    时光流逝,时间过的真快啊!疲于工作,发现近一个多月没写文章了.此文算是对最近的工作做个总结吧.经过尽二个月的不断摸索,TightVNC终于支持H264编解码了,前期真正编写H264编解码器只花了一周左 ...

  8. 让WebRTC支持H264编解码

    最近实验了下如何让WebRTC支持H264编码,记录下,供有需要的人参考. 说明一下,我是在 Ubuntu Server 14.04 下编译的 WebRTC ,使用 native(C++) api 开 ...

  9. 视频的基本参数及H264编解码相关概念

    概述 上几篇文章介绍了音频的采集以及编码,现在我们开始学习视频相关的知识,同样先从概念开始.本篇文章的主要内容有: 视频相关参数 帧率(fps) 分辨率 DTS和PTS 码率 音视频同步 对视频编解码 ...

最新文章

  1. python中for语句可以有else部分_Python中的for...else语句可以不写else吗?
  2. 损失函数梯度对比-均方差和交叉熵
  3. jsp循环输出表格_「翻译」JS可视化学习之七:Promise、事件循环和异步2
  4. 企业微信H5_网页jssdk调用 config和agentconfig的区别
  5. android 常用图像密码,这几种Android图形密码最常用
  6. 夜曲歌词 拼音_夜曲歌词完整版 lrc 周杰伦 - Yo歌词网
  7. 计算机配置音箱便宜,5款性价比高的电脑小音箱推荐(每一款音质都相当ok
  8. Oracle ERP AP模组中Vender 联系人信息查询语句
  9. 快速批量生成双排标签序列号
  10. Excel数值函数(4):对指定条件的单元格求和
  11. 2017-4-15,16_akala啦_新浪博客
  12. C# 计算指定年月的当月工作日方法
  13. matlab如何离散椭圆方程,给出一些椭圆上离散的点的横纵坐标,怎么用matlab拟合出椭圆方程...
  14. HTML之FrameSet,Frame和Iframe区别
  15. kubernetes健康检查配置解析
  16. 深度学习论文阅读目标检测篇(七)中英对照版:YOLOv4《Optimal Speed and Accuracy of Object Detection》
  17. 王春亮阿育吠陀推拿心学
  18. MS10_002漏洞利用
  19. 第一篇(上):对称分量分解(Symmetrical Component Decomposition)序列变换 (Sequence Transformation)零序 正序 负序 分解
  20. php微博互粉,PHP+redis实现微博的拉模型案例详解

热门文章

  1. spring-boot-starter-security与应用安全
  2. 这么牛的毕业生,来当CTO吧!
  3. Flume(7) flume自定义Sinks实现
  4. flume 多个source sinks channel 配置记录
  5. 【信息技术】【2008.06】基于上下文感知和注意力的视觉对象跟踪
  6. 威胁情报分析_第一站
  7. 关于UrlEncoder和UrlDecode
  8. dorado7.x实现复选框
  9. c语言编程项目实践报告快递管理系统,学生成绩管理系统C语言程序设计实践报告.doc...
  10. html语音转asr,自动语音识别(ASR)在呼叫中心系统中的应用