【问题标题】:stream a video file from nodejs server to many HTML5 clients simultaneously同时将视频文件从 nodejs 服务器流式传输到多个 HTML5 客户端
【发布时间】:2017-06-10 06:55:23
【问题描述】:

我在网上搜索了如何同时将 video.mp4 流式传输到多个 html5 客户端。 我阅读了一些教程,但我还没有在 nodejs 中看到正确的做法。

你有一些探索的方法吗?

【问题讨论】:

  • 您要流式传输还是只提供静态视频文件?
  • 静态文件。带有静态视频文件的广播
  • 那么只使用 express 提供文件(下面答案中的语法)应该可以解决您的问题
  • 谢谢。但是如果我想像直播一样流式传输视频文件,这个代码不是很好的。我想在无法控制视频的情况下播放文件。像这样的东西 socket.broadcast.emit('my_video',chunck) 。但我知道 socket.io 不是正确的方法。我学习了类似 fs.createReadStream 的东西,但它并没有解决我的问题

标签: javascript node.js html video npm


【解决方案1】:

您可以使用 express 将视频作为污点文件提供 - 这将允许多个 HTML5 客户端流式传输您的视频。

语法非常简单 - 将视频放入给定文件夹并告诉 express 提供该文件夹中的静态文件。

var express = require('express');
var path = require('path');
var app = express();

//Tell express which folder to use to server static files (can be more than one)
app.use(express.static(path.join(__dirname, 'video_folder')));

//Listen for requests
app.listen(3000);

话虽如此,如果您需要良好的用户体验,您可能需要使用专用的流媒体服务器,并且可能需要提供多个不同版本的视频以适应不同的设备。如果使用自适应比特率协议(客户端逐块请求视频块并根据网络条件为每个块选择比特率),您还需要具有不同比特率版本的视频以适应不同的网络条件。

查看一些开源流媒体服务器,以了解您是否需要使用其中一个 - 例如。 GStreamer:https://gstreamer.freedesktop.org

【讨论】:

  • 谢谢。但是如果我想像直播一样流式传输视频文件,这个代码不是很好的。我想在无法控制视频的情况下播放文件。像这样的东西 socket.broadcast.emit('my_video',chunck) 。但我知道 socket.io 不是正确的方法。我学习了类似 fs.createReadStream 的东西,但它并没有解决我的问题
猜你喜欢
  • 1970-01-01
  • 2010-10-17
  • 2014-01-19
  • 2012-04-15
  • 2023-03-26
  • 1970-01-01
  • 2018-01-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多