当前位置: 首页 > 面试题库 >

通过node.js使用HTML 5进行视频流传输

杨轶
2023-03-14
问题内容

我正在尝试设置一个网络服务器,该服务器将使用node.js将视频流传输到HTML5视频标签。到目前为止,这是我的代码:

var range = request.headers.range;
var total = file.length;

var parts = range.replace(/bytes=/, "").split("-");
var partialstart = parts[0];
var partialend = parts[1];

var start = parseInt(partialstart, 10);
var end = partialend ? parseInt(partialend, 10) : total-1;

var chunksize = (end-start)+1;

response.writeHead(206, { "Content-Range": "bytes " + start + "-" + end + "/" + total, "Accept-Ranges": "bytes", "Content-Length": chunksize, "Content-Type": type });
response.end(file);

其中“ request”代表http请求,类​​型是“ application / ogg”或“ video / ogg”(我都尝试过),而“
file”是已从文件系统读取的.ogv文件。这是响应头:

Content-Range   bytes 0-14270463/14270464
Accept-Ranges   bytes
Content-Length   14270464
Connection     keep-alive
Content-Type     video/ogg

我已经检查了响应头,并且此代码似乎运行良好,但是存在两个问题:

  1. 该视频在本地网络上的加载速度似乎非常慢。据我所知,使用Firebug检查响应时,文件似乎以约150 kb / sec的速度流传输。
  2. 该视频完全无法播放。即使我等待整个加载,HTML 5视频标签也只会显示一个大的“ x”,而不是firefox中的电影。

是否有人对我可以通过node.js进行视频流传输有什么想法?

谢谢!
克里斯


问题答案:

我可以在nodejs论坛的一些帮助下使它起作用:

http://groups.google.com/group/nodejs/browse_thread/thread/8339e0dc825c057f/822b2dd48f36e890

Google网上论坛主题集锦:

众所周知,谷歌浏览器会先发出0-1024范围的请求,然后再请求“ 1024-”范围。

response.end(file.slice(start,chunksize),“ binary”);

然后:

通过将“连接”标头设置为“关闭”,我能够使视频在Firefox中正常播放

然后:

似乎您在错误地计算内容长度:

var chunksize =(end-start)+1;

如果开始为0,结束为1,则您的chunksize为2,应为1。



 类似资料:
  • 问题内容: 是否有使用Java直播视频的良好库?理想情况下,管道的两端都应使用Java编写,但我最关心的是视频播放器。您会推荐什么软件? 更新 :似乎VLC引入了1-2秒的延迟。我需要真正的实时视频流。记录到播放的延迟必须小于300ms。 问题答案: 我见过的最好的视频播放/编码库是ffmpeg。它播放您扔给它的所有内容。(它是MPlayer使用的。)它是用C编写的,但是我发现了一些Java包装器

  • 问题内容: Tl; Dr-问题: 用Node.js处理将视频文件流传输到html5视频播放器以 使视频控件继续工作 的正确方法是什么 ? 我 认为 这与处理标头的方式有关。无论如何,这是背景信息。代码 有点 冗长,但是非常简单。 客户: 服务器: 但是此方法仅限于大小小于1GB的文件。 流式传输(任何大小)视频文件 通过利用,服务器可以读取流中的文件,而不是一次将其全部读取到内存中。这听起来像做事

  • 我使用aws kinesis video stream webRTC在reactjs中进行视频聊天。一切都很好。但是我想把视频存储在s3 Bucket中。我应该如何实现这个视频存储?

  • 问题内容: Tl; Dr-问题: 用Node.js处理将视频文件流传输到html5视频播放器以 使视频控件继续工作 的正确方法是什么 ? 我 认为 这与处理标头的方式有关。无论如何,这是背景信息。代码 有点 冗长,但是非常简单。 使用Node将小视频文件流化为HTML5视频很容易 我学习了如何非常轻松地将小型视频文件流式传输到HTML5视频播放器。使用此设置,控件可以正常工作,而我的视频也完美无缺

  • http://www.strathweb.com/2013/01/Asynchronaly-streaming-video-with-asp-net-web-api/ 在实现一个示例项目后,我意识到该示例基于Web API1,而不是我正在使用的Web API2.1。在做了更多的研究之后,我得到了用WebAPI2.1编译的代码。然后我意识到,如果我想做流媒体,我不能使用MP4文件,这背后有相当多的技

  • 用Node.js处理将视频文件流到html5视频播放器以使视频控件继续工作的正确方法是什么? 我认为这与头的处理方式有关。不管怎样,这是背景资料。代码有点长,但是,它非常简单。 我学会了如何将小视频文件流式传输到HTML5视频播放器。有了这个设置,控制工作没有任何工作,我的部分,视频流完美。这里有一个完整的工作代码和示例视频的工作副本,可以在Google Docs上下载。 客户: 服务器: 但此方