我有一个node.js应用程序。在它上面,我有一个视频标签,可以从画布中获取其内容(通过captureStream()
- 方法)。
现在,我想以某种方式将此视频流发送到MPV播放器(在同一台设备上),将其作为真实直播流播放。例如,作为UDP流或类似的东西。有没有人知道如何做到这一点?
<canvas id="mycanvas" width="600" height="600" style="border:2px solid;"></canvas>
<video id="video" autoplay
style="border:1px solid black; height: 600px; width:600px;"></video>
这是视频标签(以及画布)的定义。如何将node.js作为流发送到mpv播放器?
我的视频,正如我所说,基本上来自画布,所以它是一个无尽的视频,我没有像网址,我只有流变量,基本上只是以下内容:
PointerEvent {isTrusted: true, pointerId: 1, width: 1, height: 1, pressure: 0.5…}
altKey
:
false
bubbles
:
true
button
:
-1
buttons
:
1
cancelBubble
:
false
cancelable
:
true
clientX
:
345
clientY
:
302
composed
:
true
ctrlKey
:
false
currentTarget
:
null
defaultPrevented
:
false
detail
:
0
eventPhase
:
0
fromElement
:
null
height
:
1
isPrimary
:
true
isTrusted
:
true
layerX
:
337
layerY
:
294
metaKey
:
false
movementX
:
10
movementY
:
14
offsetX
:
335
offsetY
:
292
pageX
:
345
pageY
:
302
path
:
Array(7)
pointerId
:
1
pointerType
:
"mouse"
pressure
:
0.5
relatedTarget
:
null
returnValue
:
true
screenX
:
345
screenY
:
368
shiftKey
:
false
sourceCapabilities
:
null
srcElement
:
canvas#mycanvas
tangentialPressure
:
0
target
:
canvas#mycanvas
tiltX
:
0
tiltY
:
0
timeStamp
:
2981.2900000000004
toElement
:
canvas#mycanvas
twist
:
0
type
:
"pointermove"
view
:
Window(0)
which
:
0
width
:
1
x
:
345
y
:
302
所以基本上只有变量不是完整的视频,但视频标签启用视频。但是我不知何故需要将这个“视频”传输到后端,或者以某种方式将其与mpv播放器一起播放,或者将此视频的udp流发送到某个地方,以便通过播放器接收它。
答案 0 :(得分:0)
据我所知,如果您只是将流提供给它,MPV实际上可以播放流。
我编写了一个名为Node-MPV的NPM软件包,可让您从NodeJ控制MPV,如此
let mpv = require('node-mpv')
let player = new mpv();
player.loadStream('link/to/your/stream');
你很高兴。查看GitHub文档以获取更多信息,如果有,请查找您的内容。
我正在重新制作模块,这将使用像这样的承诺稍微改变初始化
let mpv = require('node-mpv')
let player = new mpv();
player.start().then(() => {
player.loadStream('link/to/your/stream');
}
.catch((error) => {
console.log(error);
});
虽然代码稍微多一些,但它也更稳定。
如果您正在寻找浏览器和NodeJs服务器之间的某种通信(可能是实时的),请查看SocketIO,它非常易于使用且非常强大。