WebRTC 本身支持多種視頻編解碼器,但 H.265/HEVC 編解碼器的支持主要取決於瀏覽器或應用的實現。不過,如果你確定你的 WebRTC 實現和對端支持 H.265,可以通過修改 SDP 來優先選擇 H.265 編解碼器。
以下是如何指定 H.265 作為優先解碼器的基本步驟:
獲取 SDP
當你創建或接收一個 offer 或 answer 時,你將會得到一個 Session Description,也叫做 SDP (Session Description Protocol)。
修改 SDP
搜索 SDP 中與 H.265 有關的 “m=” 行。這一行描述了一個媒體流及其屬性。
例如,你可能會看到這樣的東西:
m=video 9 UDP/TLS/RTP/SAVPF 96 97 98
a=rtpmap:96 H265/90000
在這裡,96、97 和 98 是可用編解碼器的 payload 類型,其中 96 對應 H.265。
調整編解碼器優先級
為了使 H.265 有更高的優先級,你可以將其放在 m=video 行中其他 payload 類型之前,如:
m=video 9 UDP/TLS/RTP/SAVPF 96 97 98
設置修改後的 SDP
將修改後的 SDP 設置為本地或遠程描述。
粉絲福利, 免費領取C 音視頻學習資料包 學習路線大綱、技術視頻/代碼,內容包括(音視頻開發,面試題,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,編解碼,推拉流,srs),有需要的可以進企鵝裙927239107領取哦~
let pc = new RTCPeerConnection();
pc.createOffer().then(offer => {
let modifiedSDP = modifySDPToPreferH265(offer.sdp);
return pc.setLocalDescription({type: offer.type, sdp: modifiedSDP});
}).then(() => {
// 接下來的代碼,例如發送 SDP 給遠程對端等。
});
function modifySDPToPreferH265(sdp) {
// 這裡可以添加實際修改 SDP 的代碼。
// 根據上面的說明,找到與 H.265 相關的 "m=" 行,並重新排序編解碼器的 payload 類型。
return sdp;
}