使用 js 读一个视频文件并转为 blob,但是不能边载边播。

2016-12-18 22:12:14 +08:00
 lslqtz
有什么方法能够解决这个问题,现在使用的是 XMLHttpRequest 。主要是想分段加载一些流媒体 =w=。
9403 次点击
所在节点    JavaScript
21 条回复
bzw875
2016-12-18 22:25:02 +08:00
看 bilibili 的开源项目 flv.js 应该有帮助
lslqtz
2016-12-18 22:26:41 +08:00
@bzw875 看不懂 T_T
我也觉得有帮助 所以提问之前看过 github
Lpl
2016-12-18 23:10:04 +08:00
m3u8 格式的应该可以分段吧
binux
2016-12-18 23:16:20 +08:00
lslqtz
2016-12-19 00:12:36 +08:00
@binux 这个直接在浏览器运行不能用。。 npm 不是 nodejs 的包管理器么。。
这个看起来没问题,不过 js 新手表示不懂
Roycom
2016-12-19 01:14:26 +08:00
标记一下
tabris17
2016-12-19 01:22:37 +08:00
可以, youtube 的播放器就是这么干的
binux
2016-12-19 01:29:45 +08:00
@lslqtz 你需要 browserify
lslqtz
2016-12-19 13:25:00 +08:00
@binux 试了试,结果找不到模块懵逼了。。
echo "var videostream=require('videostream');" > 1.js && npm install -g npm && npm install -g videostream && node 1.js
然后就看到这个。。 Cannot find module 'videostream'
lslqtz
2016-12-19 13:26:28 +08:00
@binux 好吧,是我的-g 参数。。
lslqtz
2016-12-19 13:30:51 +08:00
@binux 然后我用示例直接报错了。。
var elem = document.createElement('video');
lslqtz
2016-12-19 13:30:57 +08:00
ReferenceError: document is not defined
2zH
2016-12-19 15:01:09 +08:00
官网原话是: npm is the package manager for JavaScript.
2zH
2016-12-19 15:02:33 +08:00
@lslqtz 咦 你是在浏览器运行报的错吗。(ReferenceError: document is not defined)
lslqtz
2016-12-19 15:18:43 +08:00
@2zH 我运行 node 1.js > 2.js 报的错...
浏览器运行就是 require 报错
2zH
2016-12-19 15:57:09 +08:00
@lslqtz document 是浏览器上定义的一个 Object ,所以肯定不是 node 直接执行。 require 报错这个问题,你需要找一个打包工具来帮你做这个 require 操作。

先执行 npm install 安装 package.js 中的对应依赖,然后运行打包工具把 index.js 跟 index.js require 的其他库打包成一个文件,然后插入 html 文件中。

打包工具有楼上说的 browserify ,也有 webpack 等等。
lslqtz
2016-12-19 16:15:43 +08:00
@2zH js 渣表示非常感谢~,把 require 的库打包成一个文件后在浏览器中直接使用吗。
2zH
2016-12-19 16:23:46 +08:00
@lslqtz

是的是的, html 直接 src 进去。
另:头像好眼熟 233
royzxq
2016-12-19 19:20:54 +08:00
如果单纯想播放 mp4 文件, video src 里直接添加就好。
如果想播放 flv 文件, 请使用 flv.js 。
如果想播放 m3u8 分片列表, 请使用 hls.js 。
如果想使用 MSE + XMLHttpRequest 加载流媒体, 请参阅 flv.js 源码 src/io/xhr-range-loader.js 以及 src/core/mse-controller.js
lslqtz
2016-12-19 21:14:50 +08:00
@royzxq 好评
最后两个对我有帮助,感谢~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/328501

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX