使用原生 webRTC 将视频编解码器从 VP8 更改为 VP9
Change video codec from VP8 to VP9 with native webRTC
我正在尝试弄清楚如何将 webRTC 上的视频编解码器从 vp8 更改为 vp9,但在任何地方都找不到合适的答案。请问有人 lead/show 我是怎么做到的?谢谢
我认为您需要修改 SDP 才能实现它。据我了解,这个想法是端点协商要使用的最佳编解码器。
VP9 发布新闻有一些关于如何将首选编解码器从 VP8 更改为 VP9 的提示https://developers.google.com/web/updates/2016/01/vp9-webrtc?hl=en。
随着浏览器开始支持 setCodecPreferences,您可以检查默认情况下要使用的编解码器的 mimetype 以设置编解码器首选项。例如,如果您想为视频选择 vp8,您可以检查“video/vp8”mimetype 并将您的编解码器首选项设置为 vp8 编解码器:
// note the following should be called before before calling either RTCPeerConnection.createOffer() or createAnswer()
let tcvr = pc.getTransceivers()[0];
let codecs = RTCRtpReceiver.getCapabilities('video').codecs;
let vp8_codecs = [];
// iterate over supported codecs and pull out the codecs we want
for(let i = 0; i < codecs.length; i++)
{
if(codecs[i].mimeType == "video/VP8")
{
vp8_codecs.push(codecs[i]);
}
}
// currently not all browsers support setCodecPreferences
if(tcvr.setCodecPreferences != undefined)
{
tcvr.setCodecPreferences(vp8_codecs);
}
代码改编自此 Pericror blog post 以强制 audio/video 编解码器。
我正在尝试弄清楚如何将 webRTC 上的视频编解码器从 vp8 更改为 vp9,但在任何地方都找不到合适的答案。请问有人 lead/show 我是怎么做到的?谢谢
我认为您需要修改 SDP 才能实现它。据我了解,这个想法是端点协商要使用的最佳编解码器。
VP9 发布新闻有一些关于如何将首选编解码器从 VP8 更改为 VP9 的提示https://developers.google.com/web/updates/2016/01/vp9-webrtc?hl=en。
随着浏览器开始支持 setCodecPreferences,您可以检查默认情况下要使用的编解码器的 mimetype 以设置编解码器首选项。例如,如果您想为视频选择 vp8,您可以检查“video/vp8”mimetype 并将您的编解码器首选项设置为 vp8 编解码器:
// note the following should be called before before calling either RTCPeerConnection.createOffer() or createAnswer()
let tcvr = pc.getTransceivers()[0];
let codecs = RTCRtpReceiver.getCapabilities('video').codecs;
let vp8_codecs = [];
// iterate over supported codecs and pull out the codecs we want
for(let i = 0; i < codecs.length; i++)
{
if(codecs[i].mimeType == "video/VP8")
{
vp8_codecs.push(codecs[i]);
}
}
// currently not all browsers support setCodecPreferences
if(tcvr.setCodecPreferences != undefined)
{
tcvr.setCodecPreferences(vp8_codecs);
}
代码改编自此 Pericror blog post 以强制 audio/video 编解码器。