我想在NodeJS中构建一个高可用性和高性能的视频文件服务器以及流式视频。基本上,我想知道:


在NodeJS中创建视频文件服务器的可能方法有哪些。
它会管理许多并发请求。由于这是一个视频文件,因此每个请求都需要花费一些时间才能完全解决。
还有使用其他静态文件服务器的其他可能性。


请向我建议如何走上正确的道路。

最佳答案

视频流主要涉及通过HTTP进行高效的数据传输。数据就是您的文件,通过Web服务器进行的数据传输可能没有与NodeJS共享或进行任何类型的后端处理。这取决于要求,但数据通常作为文件直接提供给用户,而无需通过后端传递。否则,系统元素将耦合在一起,从而影响性能并增加熵。

建议单独保留系统部分,例如Nginx可以一次性处理身份验证,授权,视频流,而无需任何后端,这可以是一个很好的起点,而且绝对是真正的高性能。检出this approach

server {
   location /video/ {
      rewrite               /video/([a-zA-Z0-9_\-]*)/([0-9]*)/(.*)\.flv$ /flv/$3.mp4?st=$1&e=$2;
    }

    location /mp4/ {
      internal;
      mp4;
      secure_link           $arg_st,$arg_e;
      secure_link_md5       YOUR_SECRET_PASSWORD_HERE$arg_e$uri;
}


视频文件的URL将由后端根据某种算法预先生成,在示例中是通过Ruby完成的,但是有an example on Bash

echo -n '2147483647/s/link127.0.0.1 secret' | \
    openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d =


一旦达到这个主要目标(视频文件流?),那么NodeJS或任何其他给定的技术都可以用于常见任务,例如增强的身份验证,授权,注释,共享和其他功能。

09-30 13:48
查看更多