让 WebRTC 使用外部的音视频编解码器

本文探讨如何在WebRTC中使用自定义的音视频编解码器,重点在于通过CreatePeerConnectionFactory方法传入自定义的WebRtcVideoEncoderFactory,实现外部编解码器与内部的无缝衔接。当外部编码器创建失败时,WebRTC会自动回退到内部编码器。
摘要由CSDN通过智能技术生成

WebRTC 支持使用自己的编解码器(限 native 开发),音频,视频都可以。这里以视频编码为例来分析下 WebRTC 中相应的源码。

CreatePeerConnectionFactory

在 webrtc/api/peerconnectioninterface.h 中有个方法 CreatePeerConnectionFactory,原型如下:

inline rtc::scoped_refptr<PeerConnectionFactoryInterface> 
CreatePeerConnectionFactory(
    rtc::Thread* worker_and_network_thread,
    rtc::Thread* signaling_thread,
    AudioDeviceModule* default_adm,
    rtc::scoped_refptr<AudioEncoderFactory> audio_encoder_factory,
    rtc::scoped_refptr<AudioDecoderFactory> audio_decoder_factory,
    cricket::WebRtcVideoEncoderFactory* video_encoder_factory,
    cricket::WebRtcVideoDecoderFactory* video_decoder_factory);

可以看到, CreatePeerConnectionFactory 最后四个参数,允许我们提供自己的编解码工厂。这样我们就可以实现自己的 factory ,在 factory 中创建自己的 encoder(decoder),WebRTC 内部就会使用我们的 encoder(decoder)。

代码片段类似下面:

    rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> factory = webrtc::CreatePeerConnectionFactory(
            current_thread, current_thread, 
            your_adm, 
            your_audio_encoder_factory, 
            your_audio_decoder_factory,
            your_video_encoder_factory,
            your_video_decoder_factory);
    rtc::scoped_refptr<PeerConnectionInterface> peer_connection = factory->CreatePeerConnection(
         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

foruok

你可以选择打赏

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

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

打赏作者

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

抵扣说明:

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

余额充值