我有以下代码在Google Chrome浏览器中流式传输连接的视频源。 WebRTC的getUserMedia执行此操作。以下代码段用于配置我的外部摄像头设备的分辨率和帧频。

function configureVideo()
{
      const video_constraints ={};

      //Create the following keys for Constraint
      video_constraints.video = {};

      //set camera name
      video_constraints.video.deviceId = {};
      video_constraints.video.deviceId.exact = <device_id_comes_here>

      //set resolution Width
      video_constraints.video.width = {};
      video_constraints.video.width.exact = 640;

      //set resolution height
      video_constraints.video.height = 480;
      video_constraints.video.height.exact = streamHeight;

      //set fps
      video_constraints.video.frameRate = 60;
      video_constraints.video.frameRate.exact = streamFps;

      console.log("Selected Contraints is :", video_constraints);

      navigator.mediaDevices.getUserMedia(video_constraints).then(streamCallback).catch(handleError);
}


是的,我可以从我的外部Camera设备成功地传输视频。该摄像机提供两种类型的帧格式YUYV和BY8。但是我真的不知道当前正在流式传输什么帧格式。

有什么方法可以在WebRTC中配置我感兴趣的视频帧格式。

最佳答案

回答您的问题“是否有任何方法可以在WebRTC中配置我感兴趣的视频帧格式。”答案是否定的……那真令人沮丧!

您必须获取流并将其渲染到画布上以获取数据,然后进行转换...这主要是由于MediaCapture的功能和框架可能会经历的转换(取决于浏览器的实现)。您可以使用ImageCapture获得更多相机属性(并将其作为ImageBitmap获得),但目前的支持非常薄弱。

请阅读下面的答案,以获取有关MediaCapture和ImageCapture用例的更多信息。

Why the difference in native camera resolution -vs- getUserMedia on iPad / iOS?

Take photo when the camera is automatically focused

关于javascript - 使用getUserMedia API配置帧格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52758814/

10-11 12:47