WebRTC新增FFmpeg视频编解码模块

本文介绍了如何在WebRTC中添加FFmpeg作为外部视频编解码器。内容包括编码器和解码器的初始化、实现,以及如何处理编码和解码后的数据。通过FFmpeg,可以支持更多编码格式,如H265,以及硬件加速,提升效率。
摘要由CSDN通过智能技术生成

1、整体描述

目前webrtc内置的视频编解码器包括:VP8、VP9、AV1和H264。一般情况下载pc端基本可以满足大部分的需求,但是有时候为了进行编解码器的扩展包括支持H265或者是支持硬件编解码以提升效率时需要新增编解码模块。

img

2、新增外部编码器

编码器实现的要点包括两个部分: 一是需要实现以VideoEncoder为基类的编码器对象,核心API实现如下: (1)初始化编码器,将编码参数传入进行初始化。

virtual int InitEncode(const VideoCodec* codec_settings,
                         const VideoEncoder::Settings& settings);

(2)回调函数的注册,用于编码后数据的回传。

virtual int32_t RegisterEncodeCompleteCallback(
      EncodedImageCallback* callback) = 0;

(3)编码函数,将视频帧数据传入到解码器中,这个函数是实际编码接口;外部数据输入包括VideoFrame数据帧一般是kI420数据和帧类型(I帧、P帧…)

virtual int32_t Encode(const VideoFrame& frame,
                         const std::vector<VideoFrameType>* frame_types) = 0;

(4) QOS相关控制,设置码率和帧率等操作。

void SetRates(const RateControlParameters& parameters) override;

二是需要实现EncodedImageCallback回调基类来处理,编码后的数据回传到视频引擎。核心函数就是将编码后的数据转成EncodedImage结构回传到视频引擎。

2.1 编码器初始化

编码器的初始化主要是对编码器的基础参数包括

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值