我想在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或任何其他给定的技术都可以用于常见任务,例如增强的身份验证,授权,注释,共享和其他功能。