猿问

WebRTC 远程流大小太大

我正在尝试在 WebRTC 呼叫中录制远程视频流。我认为主要问题是我不能使用编解码器来压缩录制的视频。


我试过这个代码


  let options = {mimeType: 'video/mp4;codecs=vp9'};

  if (!MediaRecorder.isTypeSupported(options.mimeType)) {

    console.error(`${options.mimeType} is not Supported`);

  options = {mimeType: 'video/mp4;codecs=vp8'};

  if (!MediaRecorder.isTypeSupported(options.mimeType)) {

  console.error(`${options.mimeType} is not Supported`);

  options = {mimeType: 'video/mp4'};

  if (!MediaRecorder.isTypeSupported(options.mimeType)) {

    console.error(`${options.mimeType} is not Supported`);

    options = {mimeType: ''};

  }

}

}

在上面的片段中,我正在尝试 .mp4 类型,但编解码器被拒绝。如果我尝试使用其他编解码器(如 h.264 而不是 vp9),也会发生同样的情况。


唯一接受的文件类型是带有 vp9 编码的 .webm,但它的大小太大。


动漫人物
浏览 283回答 2
2回答

明月笑刀无情

并非所有浏览器都支持您尝试使用的所有格式。在任何情况下,您都在抱怨 VP9 的输出太大,但它是可用的最有效的编解码器之一。您的实际问题是默认比特率太高,而您没有设置它们。试试这个:const mediaRecorder = new MediaRecorder(stream, {  audioBitsPerSecond: 128 * 1000, // 128 kbit/s  videoBitsPerSecond: 2 * 1000 * 1000, // 2 Mbit/s});根据您的质量/文件大小权衡需要调整这些值。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答