我有以下代码在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/