NodeJS + Express で API を作成しました。これは、/videos/stream/{id}
ルートを呼び出すときにビデオ ストリームを送信することになっています。コードは次のとおりです。
router.get('/stream/:id', function(req, res) {
fs.readFile(app.get('path') + '/videos/' + req.params.id + '/video.mp4', function (err,data) {
if (err) { ... }
res.writeHead(200, {
'Content-type' : 'application/octet-stream',
'Content-Length' : data.length
});
res.end(data);
});
});
URI全体をブラウザに入力すると、VLCでストリームを開くか保存できるため、このコードは機能しています。
問題は、Videogular フレームワークでビデオ ストリームを表示できないことです。次のように、「開始方法」コードをコピーして AngularJS アプリに貼り付けると、次のようになります。
sources: [
{src: $sce.trustAsResourceUrl("http://static.videogular.com/assets/videos/videogular.mp4"), type: "video/mp4"},
{src: $sce.trustAsResourceUrl("http://static.videogular.com/assets/videos/videogular.webm"), type: "video/webm"},
{src: $sce.trustAsResourceUrl("http://static.videogular.com/assets/videos/videogular.ogg"), type: "video/ogg"}
],
これは機能し、プレーヤーでビデオを見ることができますが、URI を API の URI に置き換えると、次のようになります。
sources: [
{src: $sce.trustAsResourceUrl("http://localhost:3000/api/videos/stream/556747d8f657a9b81c7f3543"), type: "application/octet-stream"}
],
プレーヤーは黒いままで、ビデオが再生されません。理由はわかりません。