如何使用NodeJS流式传输.m4v视频

时间:2017-10-07 20:57:36

标签: node.js angular express m4v

我需要的是能够将服务器本地文件上的视频发送到客户端。我无法创建静态的视频'这些视频的文件夹只会暂时可用,这意味着我将拥有动态视频。

那么如何从服务器文件中检索可播放的.m4v视频文件(如果我知道路径)并将其发送到angular.io客户端进行播放

2 个答案:

答案 0 :(得分:0)

这是一个简单的解决方案:

在服务器端:

$(function() {
$('#aValue').hide();
$('#bValue').hide();
$('#cValue').hide();
$('#pythagoreanTheorem').click(function() {
    $('#aValue').show();
    $('#bValue').show();
    $('#cValue').show();
$('#resultButton').click(function() {
    var aValue = document.getElementById("aText");
    var bValue = document.getElementById("bText");
    var result = (aValue*aValue)+(bValue*bValue)
    $('#result').text(result);
    });
});

});



function dropDownBox() {
    document.getElementById("myDropdown").classList.toggle("show");
}

function filterFunction() {
    var input, filter, ul, li, a, i;
    input = document.getElementById("myInput");
    filter = input.value.toUpperCase();
    div = document.getElementById("myDropdown");
    a = div.getElementsByTagName("a");
    for (i = 0; i < a.length; i++) {
        if (a[i].innerHTML.toUpperCase().indexOf(filter) > -1) {
            a[i].style.display = "";
        } else {
            a[i].style.display = "none";
        }
    }
}

在客户端(html):

app.get('/video', function(req, res) {
  const path = 'assets/sample.m4v'
  const stat = fs.statSync(path)
  const fileSize = stat.size
  const head = {
    'Content-Length': fileSize,
    'Content-Type': 'video/mp4',
  }
  res.writeHead(200, head)
  fs.createReadStream(path).pipe(res)
})

也许你应该设置不同的媒体类型,如 video / x-m4v 而不是video / mp4。

Source link

答案 1 :(得分:0)

这对我来说足够了。 MP4原生支持strimming(伪流)。通过流媒体在浏览器中观看视频效果非常好。

const router    = require('express').Router();
...
router.get('/video/:acckey', async (req, res, next)=>{
  ...
  let full_path = await myAccessControl.auth(acckey);
  ...
  if (fs.existsSync(full_path)) {
    res.setHeader('Content-Type', 'video/mp4');
    res.status(200).sendFile(full_path, function (err) {
      if (err) {...} else {...}
    });    
  }    
}

在HTML中(精简版):

<VIDEO controls src="domain.com/video/PSMAPKMDPAMDPSMPSD/">