webrtc中m74版本C++啟動(dòng)ulpfec
WebRTC中的ULPFEC是一種前向糾錯(cuò)技術(shù),用于在網(wǎng)絡(luò)傳輸過程中減少丟包率和延遲。在m74版本中,可以通過以下步驟啟動(dòng)ULPFEC:
在PeerConnectionFactory::CreatePeerConnection()函數(shù)中創(chuàng)建RtpTransceiver對(duì)象。
使用RtpTransceiver對(duì)象的SetCodecPreferences()方法設(shè)置使用的編解碼器。例如:
webrtc::RtpTransceiverInit transceiver_config; transceiver_config.direction = webrtc::RtpTransceiverDirection::kSendRecv; std::vector<webrtc::RtpCodecCapability> codecs; codecs.emplace_back(webrtc::RtpCodecCapability::CreatePayloadTypeSpecificCapability( "VP8", 96, 0, 0)); transceiver_config.send_encodings.emplace_back(webrtc::RtpEncodingParameters()); transceiver_config.send_encodings.back().codec_payload_type = 96; transceiver_config.send_encodings.back().fec = webrtc::FecParameters(webrtc::FecMechanism::kUlpFec); transceiver_config.stream_ids.emplace_back("stream_id"); transceiver_config.codecs = codecs; auto transceiver = pc->AddTransceiver(cricket::MediaType::MEDIA_TYPE_VIDEO, rtc::Optional<std::string>(), {transceiver_config});
這里,我們使用VP8編解碼器,并啟用了ULPFEC。
在PeerConnectionObserver的OnAddStream()回調(diào)函數(shù)中,添加一個(gè)新的VideoTrack,同時(shí)將其關(guān)聯(lián)到對(duì)應(yīng)的MediaStream中:
void OnAddStream(rtc::scoped_refptr<webrtc::MediaStreamInterface> stream) override { auto video_track = stream->GetVideoTracks()[0]; video_track->AddOrUpdateSink(renderer_.get(), rtc::VideoSinkWants()); }
這樣,ULPFEC就成功啟動(dòng)了。需要注意的是,啟用ULPFEC會(huì)增加一定的帶寬開銷,因此應(yīng)根據(jù)實(shí)際情況進(jìn)行配置和優(yōu)化。
相關(guān)學(xué)習(xí)資料推薦,點(diǎn)擊下方鏈接免費(fèi)報(bào)名,先碼住不迷路~】
音視頻免費(fèi)學(xué)習(xí)地址:FFmpeg/WebRTC/RTMP/NDK/Android音視頻流媒體高級(jí)開發(fā)
【免費(fèi)分享】音視頻學(xué)習(xí)資料包、大廠面試題、技術(shù)視頻和學(xué)習(xí)路線圖,資料包括(C/C++,Linux,F(xiàn)Fmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以點(diǎn)擊788280672加群免費(fèi)領(lǐng)取~
