- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
背景:
在 Windows 10 上,我使用的是 getUserMedia (gUM) 和 MediaRecorder在 Google Chrome (v71) 中捕获和编码视频流。
我请求 video/webm; codecs="avc1.42E01E"
作为编码流的 MIME 类型(在 Matroska 中装箱的 H.264)。
我选择笔记本电脑内置的廉价网络摄像头作为视频源。它被称为DMAX-AVC制作的“EasyCamera”。将它称为 CheezyCamera 很诱人。
视频流生成得很好。
问题:
流中编码视频的尺寸为 440x360 而不是我请求的 352x288。此信息嵌入在记录的流中,并且仅对该数据的消费者可见。使用各种 API 可以揭示 gUM 流、MediaRecorder 和 <video>
元素元数据都认为维度是我要求的。
当然,网络摄像头、gUM 和 MediaRecorder 将约束参数视为建议,并且可以自由地使用不同的内容进行响应。在这种情况下,当我请求 352x288 时,他们会以 440x360 响应。该系统按设计运行;那不是我的问题。
澄清一下,意外的 440x360 尺寸仅对录制流的消费者可见。我希望找到一种方法来了解制作方网络摄像头、gUM 和 MediaEncoder 信号链正在生成与我要求的不同的分辨率。
流消费者如何知道流维度?它们位于“PixelWidth”和“PixelHeight”Matroska 盒子中,并且被烘焙到 H.264 流中。 (奇怪的是,考虑到这是一个软件选择的分辨率,它不是整数个 16x16 宏 block 。它当然仍然有效。)
我无法在浏览器中解析记录的数据,因为它存储在不透明的 blob 中。
当我使用不同的、更好的网络摄像头(罗技 C615)时,我的编码视频流是我请求的大小。
我的问题:
网络摄像头/gUM/MediaRecorder/<video>
有什么办法吗?信号链在实际记录流的浏览器中找到编码流的实际尺寸?也就是说,我可以在不解码生成的流的情况下找到信号链对我的请求维度的响应吗?
最佳答案
使用MediaStream.getVideoTracks()
方法获取视频轨道(MediaStreamTrack),然后使用MediaStreamTrack.getSettings()
得到MediaTrackSettings对象,其中包含流的视频的高度和宽度。
因此,如果我请求指定为约束的高度为 0 的视频,我将获得高度为 1 像素的视频。在流式传输时,我们可以检索我请求的高度和我作为输出获得的高度。
function handleMediaStream(mystream){
let videoStreamTrack = mystream.getVideoTracks()[0];
let constraints = videoStreamTrack.getConstraints();
console.log(constraints.width, constraints.height);
// outputs: 640 0
let settings = videoStreamTrack.getSettings();
console.log(settings.width, settings.height);
// outputs: 640 1
}
let videoConstraints = { width: 640, height: 0 }
navigator.mediaDevices.getUserMedia({ video: videoConstraints })
.then(function create_media_recorder(mystream) {
handleMediaStream(mystream);
});
关于javascript - 传输的 getUserMedia/MediaRecorder 视频格式大于请求的格式。怎么说?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54352289/
我们正在尝试制作视频 session 应用程序。在 Windows 上运行该应用程序进行测试时,视频打开得很好,但是当我们在物理设备(Android 手机)上运行它时,出现以下错误并且视频不显示。 E
我知道有几篇关于此的帖子,但我的问题不同。 在 Mozilla developer guide for getUserMedia 之后,我可以看到使用:navigator.getUserMedia()
我正在使用“facingMode”约束来在两个摄像头之间切换,但我不能完全确定用户端是否有一个“环境”摄像头(后置摄像头)。计算 enumerateDevices 函数返回的 promise 的“视频
这是我的问题。 我正在制作一个使用 JS-OCR 拍照并检测单词的小应用程序。它运作良好,但我只能使用前置摄像头。我的想法是只使用后置摄像头,没有必要切换摄像头。 我正在阅读 getUserMedia
我正在为相机和麦克风运行 getUserMedia, navigator.mediaDevices .getUserMedia({audio:true, video: true)
我在使用 getUserMedia 创建的预览视频时遇到问题。视频会连接,但只显示第一帧或第二帧,并在它们之间快速切换。使用 ImageCapture 时,我仍然可以获取相机所面对的画面,但预览窗口停
我有以下限制,这些限制在桌面上的 Chrome 上运行良好(模拟移动分辨率) const constraints = { audio: false, video: {
例如,假设我有 然后我开始流式传输视频: async function startVideo() { const video = document.querySelector("#video
我尝试使用 cordova + crosswalk 显示来 self 的手机摄像头的视频,并且可以从 getUserMedia() 获取视频流,但是当流显示在 html5 视频标签上时,它显示黑屏。
有什么方法可以使用HTML5的getUserMedia()从特定麦克风(而不是默认麦克风)获取音频输入? 最佳答案 恐怕您将需要使用getSources API,该API到目前为止还没有得到很好的支持
我正在使用getUserMedia api捕获屏幕并记录来自chrome扩展程序的音频(两者一起)。 api捕获屏幕,记录视频,但不捕获音频。 Chrome版本:55 没有捕获音频的任何原因。 API
我使用“前沿”HTML5/WebRTC API 编写了一个 Web 应用程序(请参阅下面的代码)。这适用于 Chrome v20(启用了 MediaStream 标志)和最新的 FF Nightly
我在网上找到了一些代码来访问我的网络摄像头。它访问网络摄像头,但不显示它所看到的内容。我知道这是正常的,因为文档中没有 html,但我想知道如何显示结果。我找到的代码是: var constraint
我正在尝试通过 webRTC 和 GetUserMedia 共享计算机的音频,但我不知道是否可以获取此流。 在 Linux 和 Firefox 上,当我请求具有以下约束的 GetUserMedia 时
我正在使用 getusermedia() 将网络摄像头用于在线应用程序。我使用的是罗技 C615 网络摄像头(即插即用),效果很好。 getusermedia() 将仅适用于即插即用网络摄像头,还是也
我无法在 Google Chrome (v21) 中显示视频流 代码 window.addEventListener('DOMContentLoaded', function() { n
如何在 javascript 中获取流对象的当前流时间? navigator.mediaDevices.getUserMedia(约束) .then(函数(流){ console.log("在此处获取
我一直在为我的下一个项目尝试使用 webRTC 创建视频聊天,但测试很困难。我有这个简单的代码来访问相机: navigator.getUserMedia = navigator.get
我正在使用 HTML 媒体捕获和 getUserMedia 方法。它不适用于 Chrome,我收到失败时的警报。 这是我使用的示例代码: if (navigator.getUserMedia) {
我知道 iOS 不支持 getUserMedia()。有没有办法绕过它,在 iOS 和 Android 移动浏览器上流式传输视频或从视频流中捕获图像? 最佳答案 我建议查看 Video 元素“srcO
我是一名优秀的程序员,十分优秀!