使用 js 读一个视频文件并转为 blob,但是不能边载边播。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
lslqtz
V2EX    Javascript

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

  •  
  •   lslqtz 2016-12-18 22:12:14 +08:00 9755 次点击
    这是一个创建于 3296 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有什么方法能够解决这个问题,现在使用的是 XMLHttpRequest 。主要是想分段加载一些流媒体 =w=。
    第 1 条附言    2016-12-19 21:16:22 +08:00
    #4
    https://www.npmjs.com/package/videostream
    #19
    播放 flv 文件: flv.js 。
    播放 m3u8 分片列表:使用 hls.js 。
    MSE+XMLHttpRequest 加载流媒体:参阅 flv.js 源码 src/io/xhr-range-loader.js 以及 src/core/mse-controller.js 。
    21 条回复    2019-10-19 17:51:58 +08:00
    bzw875
        1
    bzw875  
       2016-12-18 22:25:02 +08:00 via iPhone   1
    看 bilibili 的开源项目 flv.js 应该有帮助
    lslqtz
        2
    lslqtz  
    OP
       2016-12-18 22:26:41 +08:00 via iPhone
    @bzw875 看不懂 T_T
    我也觉得有帮助 所以提问之前看过 github
    Lpl
        3
    Lpl  
       2016-12-18 23:10:04 +08:00 via Android
    m3u8 格式的应该可以分段吧
    binux
        4
    binux  
       2016-12-18 23:16:20 +08:00   1
    slqtz
        5
    lslqtz  
    OP
       2016-12-19 00:12:36 +08:00
    @binux 这个直接在浏览器运行不能用。。 npm 不是 nodejs 的包管理器么。。
    这个看起来没问题,不过 js 新手表示不懂
    Roycom
        6
    Roycom  
       2016-12-19 01:14:26 +08:00 via iPhone
    标记一下
    tabris17
        7
    tabris17  
       2016-12-19 01:22:37 +08:00 via iPhone
    可以, youtube 的播放器就是这么干的
    binux
        8
    binux  
       2016-12-19 01:29:45 +08:00   2
    @lslqtz 你需要 browserify
    lslqtz
        9
    lslqtz  
    OP
       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
        10
    lslqtz  
    OP
       2016-12-19 13:26:28 +08:00
    @binux 好吧,是我的-g 参数。。
    lslqtz
        11
    lslqtz  
    OP
       2016-12-19 13:30:51 +08:00
    @binux 然后我用示例直接报错了。。
    var elem = document.createElement('video');
    lslqtz
        12
    lslqtz  
    OP
       2016-12-19 13:30:57 +08:00
    ReferenceError: document is not defined
    2zH
        13
    2zH  
       2016-12-19 15:01:09 +08:00
    官网原话是: npm is the package manager for Javascript.
    2zH
        14
    2zH  
       2016-12-19 15:02:33 +08:00
    @lslqtz 咦 你是在浏览器运行报的错吗。(ReferenceError: document is not defined)
    lslqtz
        15
    lslqtz  
    OP
       2016-12-19 15:18:43 +08:00
    @2zH 我运行 node 1.js > 2.js 报的错...
    浏览器运行就是 require 报错
    2zH
        16
    2zH  
       2016-12-19 15:57:09 +08:00   1
    @lslqtz document 是浏览器上定义的一个 Object ,所以肯定不是 node 直接执行。 require 报错这个问题,你需要找一个打包工具来帮你做这个 require 操作。

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

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

    是的是的, html 直接 src 进去。
    另:头像好眼熟 233
    royzxq
        19
    royzxq  
       2016-12-19 19:20:54 +08:00   1
    如果单纯想播放 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
        20
    lslqtz  
    OP
       2016-12-19 21:14:50 +08:00
    @royzxq 好评
    最后两个对我有帮助,感谢~
    zionHH
        21
    zionHH  
       2019-10-19 17:51:58 +08:00
    您好?这个问题是怎么解决的?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2479 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 49ms UTC 05:22 PVG 13:22 LAX 21:22 JFK 00:22
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86