2017-06-26 5 views
0

私は少しnode.jsアプリケーションを持っています。その上に、(captureStream()メソッドを介して)キャンバスからコンテンツを取得するビデオタグがあります。MPVプレーヤーへのビデオストリームとしてのHTMLビデオタグコンテンツ - node.js

今、私は何とかこのビデオストリームを実際のライブストリームとして再生するために(同じデバイス上の)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プレーヤーのストリームとしてどのように送ることが可能ですか?

マイビデオ、私が言ったように、その無限のビデオと私はURLのような必要はありませんので、私は基本的には、以下れるストリーム変数を、持っている、キャンバスから基本的には次のとおりです。

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

私が知っている限り、MPVは実際にストリームを再生するだけで、実際にストリームを再生することができます。

私はあなたがそう

let mpv = require('node-mpv') 
let player = new mpv(); 

player.loadStream('link/to/your/stream'); 

ようNodeJsからMPVを制御し、あなたが行ってもいいですができますNode-MPV呼ばNPMパッケージを書かれています。詳細についてはGitHubのドキュメントをチェックし、必要な場合は探しているものを確認してください。

私はそれはまた、より安定している少しのコードですがそう

let mpv = require('node-mpv') 
let player = new mpv(); 

player.start().then(() => { 
    player.loadStream('link/to/your/stream'); 
} 
.catch((error) => { 
    console.log(error); 
}); 

のような約束を使用して、わずかにinitilazionが変更される瞬間に、モジュールを再加工しています。

ブラウザとNodeJsサーバ間で何らかの通信(リアルタイムで可能)を探している場合は、SocketIOを見てください。本当に使いやすく、非常に強力です。

+0

答えに感謝します。ここでの主な質問は、私が「キャンバス」と言った基本的なキャンバスと、キャンバスのコンテンツをビデオタグに渡すために 'captureStream'メソッドを使用するので、私は自分の「ストリーム」をどのように渡すのですか? 'stream'変数)。 どうすればこのストリームをパッケージに渡すことができますか?あなたは 'link/to/your/stream'を書いていますが、これまでストリームはバックエンドでは利用できず、ビデオタグのフロントエンドにあります。私に何ができる? – nameless

+0

あなたが言っていることは、ストリームのURLのようなものがないということですか? youtube.com/whatsoeverのようなもの?ここ(https://developer.mozilla.org/en-US/docs/Web/API/MediaStream)を見ると、そのようなストリームオブジェクトのプロパティを見ることができます。それにはgetTracks()メソッドがあります。それは無限の流れですか? – JHolub

+0

はい、無限のストリームです。私はURLを持っていません。私はキャンバスの 'captureStream'から取得してビデオタグに入れる' stream'変数を持っています。どのようにgetTracks()が私を助けることができましたか? – nameless

関連する問題