Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
Performance 流视频帧质量_Performance_Video Streaming_Html5 Video_Webrtc_Licode - Fatal编程技术网

Performance 流视频帧质量

Performance 流视频帧质量,performance,video-streaming,html5-video,webrtc,licode,Performance,Video Streaming,Html5 Video,Webrtc,Licode,我使用的是开源的WebRTC通信平台。我想降低视频质量(视频帧位大小) 流看起来像这样: var stream = Erizo.Stream({ audio:true, video:video_constraints, data: true, attributes: {name:'myStream', type:'public'} }); var bitmap; var canvas = document.createElement('canvas'

我使用的是开源的WebRTC通信平台。我想降低视频质量(视频帧位大小)

流看起来像这样:

var stream = Erizo.Stream({ 
     audio:true,
     video:video_constraints,
     data: true, 
     attributes: {name:'myStream', type:'public'}
});
var bitmap;
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');

canvas.id = "testCanvas";
document.body.appendChild(canvas);

setInterval(function() {
  bitmap = stream.getVideoFrame();
  canvas.width = bitmap.width;
  canvas.height = bitmap.height;
  context.putImageData(bitmap, 0, 0);
}, 100);
 var bitmap;
  var canvas = document.createElement('canvas');
  var context = canvas.getContext('2d');

  setInterval(function() {
        canvas.width = video.clientWidth;
        canvas.height = video.clientHeight;
        context.drawImage(video, 0, 0, canvas.width, canvas.height);
        mydata = canvas.toDataURL("image/jpeg");
        erizoStream.sendData({ base64:mydata});
    }, 200);
有可能获得这样的视频帧:

var stream = Erizo.Stream({ 
     audio:true,
     video:video_constraints,
     data: true, 
     attributes: {name:'myStream', type:'public'}
});
var bitmap;
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');

canvas.id = "testCanvas";
document.body.appendChild(canvas);

setInterval(function() {
  bitmap = stream.getVideoFrame();
  canvas.width = bitmap.width;
  canvas.height = bitmap.height;
  context.putImageData(bitmap, 0, 0);
}, 100);
 var bitmap;
  var canvas = document.createElement('canvas');
  var context = canvas.getContext('2d');

  setInterval(function() {
        canvas.width = video.clientWidth;
        canvas.height = video.clientHeight;
        context.drawImage(video, 0, 0, canvas.width, canvas.height);
        mydata = canvas.toDataURL("image/jpeg");
        erizoStream.sendData({ base64:mydata});
    }, 200);
我发送画布(一个视频帧):

var stream = Erizo.Stream({ 
     audio:true,
     video:video_constraints,
     data: true, 
     attributes: {name:'myStream', type:'public'}
});
var bitmap;
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');

canvas.id = "testCanvas";
document.body.appendChild(canvas);

setInterval(function() {
  bitmap = stream.getVideoFrame();
  canvas.width = bitmap.width;
  canvas.height = bitmap.height;
  context.putImageData(bitmap, 0, 0);
}, 100);
 var bitmap;
  var canvas = document.createElement('canvas');
  var context = canvas.getContext('2d');

  setInterval(function() {
        canvas.width = video.clientWidth;
        canvas.height = video.clientHeight;
        context.drawImage(video, 0, 0, canvas.width, canvas.height);
        mydata = canvas.toDataURL("image/jpeg");
        erizoStream.sendData({ base64:mydata});
    }, 200);
erizoStream.sendData({base64:mydata})对速度性能毫无用处

它发送数据很快,但在接收数据时会出现动画问题:

stream.addEventListener("stream-data", function(evt){
           //alert('Received data '+ evt.msg['base64']);
           if(evt.msg['base64']){
            renderBase64(evt.msg['base64']);
            }

        });
设置
setInterval
时间200ms使发送速度加快。但当我在新窗口中打开页面(选项卡)时,速度会更快

我想减少视频帧(位大小),而不使用
erizoStream.sendData()。仅从视频本身或使用视频解决速度性能问题。

发布室时

        room.publish(localStream, {maxVideoBW: 300});
可以添加
maxVideoBW
,它将最大视频带宽设置为300 kbps。 这会将质量值适当降低为带宽值

不要忘记更改
maxFrameRate

var video_constraints = {mandatory: {
       maxFrameRate:30
      },
      optional: [ ]
  };
作为计算它的示例:

如果每秒30帧,带宽为300 kbps:

然后你使用300/30=10 KB/秒的上传

通过将BW减少到35,您可以解决速度性能问题


那么,创作结束了?您当前对getUserMedia调用的视频限制是什么?这在Firefox中有效吗?根据我的经验,Firefox不允许在SDP中设置带宽上限。@Taymoq或链接似乎已断开。你能更新一下吗?