让WebRTC支持H264编解码

本文介绍了如何在Ubuntu Server 14.04上配置WebRTC以支持H264编码和解码,包括代码版本、编译选项调整、codec顺序调整以及重新编译的步骤。通过修改WebRTC源码和gn gen命令,确保rtc_use_h264和rtc_initialize_ffmpeg选项启用,并调整codec顺序,使得H264成为首选编码格式。
摘要由CSDN通过智能技术生成

最近实验了下如何让WebRTC支持H264编码,记录下,供有需要的人参考。

说明一下,我是在 Ubuntu Server 14.04 下编译的 WebRTC ,使用 native(C++) api 开发 WebRTC 应用。所以我的调整都是基于 native 代码。

最终的效果是浏览器可以用H264发送视频,也可以接收H264视频。

注意,WebRTC 使用 OpenH264 来做 encoder (见 h264_encoder_impl.cc),使用 ffmpeg 来做 decoder (见 h264_decoder_impl.cc )。

代码版本

本文对应的代码是2017年2月8号的,可以使用 gclient revinfo -a来查看具体版本,如下:

编译选项调整

WebRTC可以支持H264,但在Linux下编译时,默认没有打开。

rtc_use_h264,这个开关控制了是否使用 H264 (对应C++代码中的宏 WEBRTC_USE_H264),在 webrtc/webrtc.gni 文件中定义:

rtc_use_h264 = proprietary_codecs && !is_android && !is_ios

proprietary_codecs 在 build/config/features.gni 中定义:

proprietary_codecs = is_chrome_branded || is_chromecast

我在 Linux 下编译,branded 默认是 Chromium ,所以,proprietary_codecs 默认就是 false 。

想来想去,只好通过 gn gen 时传入 args 来调整比较方便,使用下面的命令来生成 ninja 构建文件:

gn gen out/h264Debug --args="proprietary_codecs=true"

执行完毕后,可以使用下列命令验证一下:


                
  • 12
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 22
    评论
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

foruok

你可以选择打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值