webrtc\media\engine\internalencoderfactory.cc
1、按照Push顺序,优先选取第一个编解码格式。
2、屏蔽kUlpfecCodecName、kRedCodecName的codec,可以关闭FEC冗余。
3、开启FlexFEC功能。
webrtc\pc\videocapturertracksource.cc
选取的原则是,在kVideoFormats里面找参数与kDefaultFormat默认值最接近的一组参数,作为本端的编码能力。
webrtc\media\engine\webrtcvideoengine.cc
EncoderStreamFactory::CreateEncoderStreams
webrtc\media\engine\webrtcvideoengine.cc
static const int kDefaultQpMax = 56;
const int kDefaultVideoMaxFramerate = 60;
webrtc\src\webrtc\api\peerconnectioninterface.h
disable_encryption = true 取消SRTP
disable_encryption = false 开启SRTP
配置密钥:
bool Conductor::CreatePeerConnection(bool dtls)配置是否生成密钥。
在webrtc里面函数实现如下:
->VideoStreamEncoder::EncodeVideoFrame
->VideoSender::AddVideoFrame----在这个函数中读取全局变量encoder_params_,判断是否需要调整视频参数。
->VideoSender::SetEncoderParameters
->VCMGenericEncoder::SetEncoderParameters
->H264EncoderImpl::SetRateAllocation---传递新的帧率码率到编码器。
codec.cc VideoCodec::SetDefaultParameters
internalencoderfactory.cc
webrtc冗余打包方式有三种:Red(rfc2198)、Ulpfec(rfc5109)、Flexfec(草案)。其中Red和Ulpfec要成对使用。
webrtcvideoengine.cc
kVideoMtu:该值用于配置一个MTU报文的最大包长。
webrtcvideoengine.cc
kMinVideoBitrateKbps:BWE检测网络异常,会通过降低码率保证视频流畅性,该值配置降低的最小阀值。
webrtc支持RTPFB和PLI FB两种重传方式。
AssignPayloadTypesAndAddAssociatedRtxCodecs->AddDefaultFeedbackParams里面将两种方式都填写到SDP命令行里面。
开启NACK可以使能高亮参数,关闭NACK可以屏蔽高亮参数。
初始化流程:
1、WebRtcVideoSendStream::SetCodec
2、VideoSendStreamImpl::ConfigureProtection
决定是否创建NACK类
3、ProtectionBitrateCalculator::SetProtectionMethod
4、VCMLossProtectionLogic::SetMethod
webrtcvideoengine.cc static std::vector
webrtcvoiceengine.cc WebRtcVoiceMediaChannel::SetSendCodecs