【发布时间】:2016-06-16 18:33:58
【问题描述】:
我正在尝试从 nodejs 服务器提供约 52MB 的 mp4 视频文件。下面附上用于提供文件的代码截图。 我有一个用于静态文件调用的 mime 类型对象,其中包含 mp4 的 mime 类型。
var mimeTypes = {
html: 'text/html; charset=utf-8',
jpeg: 'image/jpeg',
jpg: 'image/jpeg',
png: 'image/png',
js: 'text/javascript',
css: 'text/css',
mp4: 'video/mp4'
};
但是,当我尝试导航到 chrome 中的页面时,我收到错误:
GET http://localhost:8888/videos/movie.mp4 net::ERR_INCOMPLETE_CHUNKED_ENCODING
现在,同样的逻辑(如上图所示)用于提供图像和 css 就好了,但是在尝试提供 mp4 时它失败了。查看 Chrome 中的网络请求面板,我可以看到服务器以 200 OK 状态响应,并提供了一个零字节文件作为视频。网络请求中的字节范围看起来也很可疑,但我对 HTTP 请求的了解还不够,无法确定。
查看 stats 对象(如下所示,从 fs.lstat 获取),似乎该文件“知道”如何拆分为 4096 字节的块,但是我不断收到不完整的分块编码错误。我没有防病毒软件,并尝试关闭 Chrome 中的各种设置/使用其他浏览器,但我看不到视频。
{"dev":16777220,"mode":33188,"nlink":1,"uid":501,"gid":20,"rdev":0,"blksize":4096,"ino":1070608,"size":51246445,"blocks":100096,"atime":"2016-06-15T23:06:27.000Z","mtime":"2016-06-15T21:41:00.000Z","ctime":"2016-06-15T21:45:56.000Z"}
我缺少一个标题吗?我是否以某种方式过早地结束了响应?我现在一头雾水。
【问题讨论】:
标签: node.js video chunked-encoding