WebRTC 如何指定 H265解碼器

2024年2月6日 21点热度 0人点赞

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;
}