webrtc默认使用h264编解码
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编解码相关推荐
- CrossWalk WebView添加支持WebRTC及H264编解码
前言 1.WebView简介 WebView是Android平台上的一个非常重要的系统组件,用于将一个显示浏览器页面的窗口嵌入到应用程序,并提供一组接口让开发者定制一些页面加载及JavaScript对 ...
- WebRTC android 端支持H264编解码
一.WebRTC源码中默认使用的H264编解码的库 1.WebRTC源码的video_coding模块中,包含了H264编解码相关的类 打开画红线的两个头文件,分别可以看到解码类中导入了ffmpeg的 ...
- 音视频开发系列--H264编解码总结
一.概述 H264,通常也被称之为H264/AVC(或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC) 对摄像头采集的每一帧视频需要进行编码,由于视频中存在空间和时间的冗余,需要 ...
- H264编解码SPS、PPS参数说明
H264编解码参数说明 一.H264码流分层 1.NAL层 ①.如何判断帧类型(是图像参考帧还是I.P帧等)? ②. 帧格式 ③. [SPS格式解析代码分析 ParseAndRewriteSps方法 ...
- ffmpeg H264 编解码配置
ffmpeg H264编解码前面有文章介绍下,本文主要介绍一些参数配置. 编码: int InitEncoderCodec( int iWidth, int iHeight) {AVCodec * p ...
- 音视频系列--H264编解码总结
一.概述 H264,通常也被称之为H264/AVC(或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC) 对摄像头采集的每一帧视频需要进行编码,由于视频中存在空间和时间的冗余,需要 ...
- TightVNC H264编解码(一)
时光流逝,时间过的真快啊!疲于工作,发现近一个多月没写文章了.此文算是对最近的工作做个总结吧.经过尽二个月的不断摸索,TightVNC终于支持H264编解码了,前期真正编写H264编解码器只花了一周左 ...
- 让WebRTC支持H264编解码
最近实验了下如何让WebRTC支持H264编码,记录下,供有需要的人参考. 说明一下,我是在 Ubuntu Server 14.04 下编译的 WebRTC ,使用 native(C++) api 开 ...
- 视频的基本参数及H264编解码相关概念
概述 上几篇文章介绍了音频的采集以及编码,现在我们开始学习视频相关的知识,同样先从概念开始.本篇文章的主要内容有: 视频相关参数 帧率(fps) 分辨率 DTS和PTS 码率 音视频同步 对视频编解码 ...
最新文章
- python中for语句可以有else部分_Python中的for...else语句可以不写else吗?
- 损失函数梯度对比-均方差和交叉熵
- jsp循环输出表格_「翻译」JS可视化学习之七:Promise、事件循环和异步2
- 企业微信H5_网页jssdk调用 config和agentconfig的区别
- android 常用图像密码,这几种Android图形密码最常用
- 夜曲歌词 拼音_夜曲歌词完整版 lrc 周杰伦 - Yo歌词网
- 计算机配置音箱便宜,5款性价比高的电脑小音箱推荐(每一款音质都相当ok
- Oracle ERP AP模组中Vender 联系人信息查询语句
- 快速批量生成双排标签序列号
- Excel数值函数(4):对指定条件的单元格求和
- 2017-4-15,16_akala啦_新浪博客
- C# 计算指定年月的当月工作日方法
- matlab如何离散椭圆方程,给出一些椭圆上离散的点的横纵坐标,怎么用matlab拟合出椭圆方程...
- HTML之FrameSet,Frame和Iframe区别
- kubernetes健康检查配置解析
- 深度学习论文阅读目标检测篇(七)中英对照版:YOLOv4《Optimal Speed and Accuracy of Object Detection》
- 王春亮阿育吠陀推拿心学
- MS10_002漏洞利用
- 第一篇(上):对称分量分解(Symmetrical Component Decomposition)序列变换 (Sequence Transformation)零序 正序 负序 分解
- php微博互粉,PHP+redis实现微博的拉模型案例详解
热门文章
- spring-boot-starter-security与应用安全
- 这么牛的毕业生,来当CTO吧!
- Flume(7) flume自定义Sinks实现
- flume 多个source sinks channel 配置记录
- 【信息技术】【2008.06】基于上下文感知和注意力的视觉对象跟踪
- 威胁情报分析_第一站
- 关于UrlEncoder和UrlDecode
- dorado7.x实现复选框
- c语言编程项目实践报告快递管理系统,学生成绩管理系统C语言程序设计实践报告.doc...
- html语音转asr,自动语音识别(ASR)在呼叫中心系统中的应用