Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript WebRTC远程流大小太大_Javascript_Video Streaming_Webrtc_Video Codecs - Fatal编程技术网

Javascript WebRTC远程流大小太大

Javascript WebRTC远程流大小太大,javascript,video-streaming,webrtc,video-codecs,Javascript,Video Streaming,Webrtc,Video Codecs,我正在尝试在WebRTC调用中录制远程视频流。我认为主要的问题是我不能使用编解码器来压缩录制的视频 我试过这个密码 let options = {mimeType: 'video/mp4;codecs=vp9'}; if (!MediaRecorder.isTypeSupported(options.mimeType)) { console.error(`${options.mimeType} is not Supported`); options = {mimeType:

我正在尝试在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,也会发生同样的情况

唯一可接受的文件类型是.webm,采用vp9编码,但其大小太大


代码基于源代码

根据我在同一场景中的经验,我们有两种选择

  • 将文件类型写为.mp4,但内部文件仍然是.webm
  • 使用第三方库在浏览器或节点后端压缩或转换文件类型。 例:(未积极维护)
  • 实际上,在浏览器中加载繁重的文件不是一个好主意。FFMPEGJS gzipped需要6.7MB,这相当重


    我确实写了一个屏幕录音机,尽管我试过了。我遵循了选项1:P

    并非所有浏览器都支持您尝试使用的所有格式。在任何情况下,您都会抱怨VP9的输出太大,但它是最有效的编解码器之一

    您的实际问题是默认比特率太高,而您没有设置它们。请尝试以下方法:

    const mediaRecorder = new MediaRecorder(stream, {
      audioBitsPerSecond: 128 * 1000, // 128 kbit/s
      videoBitsPerSecond: 2 * 1000 * 1000, // 2 Mbit/s
    });
    

    根据质量/文件大小的权衡需要调整这些值。

    然后您应该加载videoconverter.js,并在客户端浏览器中的工作线程上执行非常繁重的转换任务。这很有帮助,但我想进一步减小大小。还有什么我能做的吗?@Lauren进一步降低比特率。@Lauren我不知道你的期望是什么,但视频占用了大量带宽。@Lauren所以,你需要大约600 kbit/s的视频流。真的很紧。您将要缩小分辨率。避免使用宽屏,只需使用4:3的纵横比即可。也许640x480,看起来还可以。@Brad,我用了你的代码,录制了12分钟,视频大小显示217MB。我应该做什么来缩小它的尺寸?