硬件实现webrtc的编解码
在Google WebRTC M125版本中,要只使用其RTP传输模块(即RTP/RTCP栈和网络传输部分),而绕过内置的编解码(codecs)和采集(capture)模块,你需要通过自定义实现来注入硬件板卡生成的已编码数据(如H.264比特流),并在接收端提取已编码数据送入硬件解码板卡。这可以通过WebRTC的Native C++ API实现,主要涉及实现自定义的webrtc::VideoEncoder
(用于发送端pass-through)和webrtc::VideoDecoder
(用于接收端pass-through),并结合PeerConnection
和自定义VideoTrackSource
来绕过采集。
WebRTC的架构允许这种定制:正常视频流是采集源 -> raw VideoFrame -> Encoder -> EncodedImage -> RTP Packetizer -> 传输。对于外部硬件编码,你可以将Encoder实现为“pass-through”模式,即忽略raw frame,直接注入外部EncodedImage到RTP packetizer。对于接收端,类似地在Decoder中提取EncodedImage送硬件,而不进行实际解码。
以下是详细步骤和C++ API调用指南。注意,WebRTC M125的API与早期版本类似(基于Chromium分支),但你需从官方源代码(https://webrtc.googlesource.com/src/+/branch_heads/125)构建libwebrtc库。假设你已设置好WebRTC开发环境(包括depot_tools、ninja构建等