【问题标题】:Is there a way to get a MediaStream from an URL without creating a video tag有没有办法在不创建视频标签的情况下从 URL 获取 MediaStream
【发布时间】:2021-12-24 20:12:27
【问题描述】:
来自https://stackoverflow.com/a/21227589/130910:
var stream = videoTag.captureStream()
但我不想创建标签。
我想这样做是因为我的流可能来自网络摄像头或视频,当它是网络摄像头时,我将videoTag.srcObject 设置为navigator.mediaDevices.getUserMedia(...) 的结果。因此,它使 API 变得笨拙。
我想做:
const stream = getStreamFromLocalVideoOrWebcam()
videoTag.src = stream
这可能吗?最好的方法是什么?
【问题讨论】:
标签:
html
html5-video
getusermedia
media-source
【解决方案1】:
我想这样做是因为我的信息流可能来自网络摄像头或视频
我认为这意味着您有一个 MediaStream(来自 getUserMedia/webcam)或一个 URL(指向一个视频)。
如果你真的有一个 MediaStream,你应该像现在一样设置srcObject。如果您有 URL,则应该改用 src 属性。所以,你的函数getStreamFromLocalVideoOrWebcam()的返回值的设计是有缺陷的。
你总是可以这样做:
function setVideoSource(videoEl) {
if (... something ...) {
videoEl.src = someVideoUrl;
} else {
videoEl.srcObject = navigator.mediaDevices.getUserMedia(...);
}
}
const videoEl = document.createElement('video');
setVideoSource(videoEl);