爱意满满的作品展示区。
jyzhengqian

Bilibili 向 HTML5 进发,播放器内核 flv.js 开源

  •  5
     
  •   jyzhengqian ·
    xqq · Oct 26, 2016 · 32030 views
    This topic created in 3662 days ago, the information mentioned may be changed or developed.

    https://github.com/Bilibili/flv.js

    原生 HTML5 仅支持播放 mp4/webm ,于是我们做了一个使 HTML5 支持播放 FLV 视频的播放内核。

    flv.js 在 JavaScript 中流式解析 flv 文件流并实时转封装为 fmp4 ,通过 Media Source Extensions 喂给浏览器,实现了 FLV 格式视频的播放。

    我们实现了:

    • 支持 H.264+AAC 编码的 FLV 视频
    • 支持多段视频无缝播放
    • 支持 HTTP FLV 超低延迟直播流播放(远低于 HLS ,与 RTMP 一致)
    • 支持在 WebSocket 上承载的 FLV 直播流
    • 支持所有主流浏览器 (Chrome, FireFox, IE11, Edge 和 Safari 10)
    • 极低的运行开销,享受浏览器硬件解码,告别 Flash 暖手时代

    另:可以在 http://www.bilibili.com/html/help.html#p 试用我们的 HTML5 播放器~

    87 replies  •  2019-05-21 16:55:20 +08:00
    kn007
    kn007
    Oct 26, 2016
    1
    支持一下
    liujun3712
    liujun3712
    Oct 26, 2016 via Android
    2
    支持,想问一下能解决手机端看视频耗电的问题吗?
    Tink
    Tink
    Oct 26, 2016 via iPhone
    3
    支持
    jackysc
    jackysc
    Oct 26, 2016
    4
    这两天新版 chrome 不能看直播了 都是无法加载插件。。
    ryanzyy
    ryanzyy
    Oct 26, 2016
    5
    支持支持 B 站的用户体验十分不错
    DoraJDJ
    DoraJDJ
    Oct 26, 2016 via Android
    6
    支持,求逸站赶紧干烂破 Flash
    XhstormR
    XhstormR
    Oct 26, 2016❤️3
    7
    不要 FLV 格式就行了啊,用 MP4 格式不行吗?
    xuwenhao
    xuwenhao
    Oct 26, 2016 via iPhone
    8
    这个很赞啊
    cxl008
    cxl008
    Oct 26, 2016
    9
    cool
    cxl008
    cxl008
    Oct 26, 2016
    10
    不过话说回来,不开源 这玩意是不是也很容易被拔下来。。。毕竟是 js
    tabris17
    tabris17
    Oct 26, 2016
    11
    其实就是把 FLV 封装的 H.264 视频转一下格式而已,并没有重新视频转码。这玩意儿限制性太大了,即便是服务器上做个格式转换也没多少开销
    suconghou
    suconghou
    Oct 26, 2016
    12
    赞! 不知道 m3u8 有没有原生的解决方案,不要 flash.现在貌似只有 safari 能原生播放 m3u8
    Technetiumer
    Technetiumer
    Oct 26, 2016
    13
    支持, B 站赶紧换掉 Flash
    Akarin
    Akarin
    Oct 26, 2016
    15
    很好,就是不明白, FLV 比 MP4 好在哪里。为什么一定要用。
    binux
    binux
    Oct 26, 2016
    16
    @XhstormR 不用存两份
    qq529633582
    qq529633582
    Oct 26, 2016 via iPhone
    17
    资瓷
    Phariel
    Phariel
    Oct 26, 2016 via Android
    18
    这几天我从 APP 分享出去的 AV 号,用微信打开居然也有弹幕了。
    HTML5 播放器已经不分 PC 端移动端全面实装了?
    binux
    binux
    Oct 26, 2016
    19
    用这个是不是能把「妈妈再也不用担心我的 MacBook 发热了计划 2 」拓展了?
    wwqgtxx
    wwqgtxx
    Oct 26, 2016 via iPhone
    20
    @tabris17 服务器上那么多 TB EB 级别的 flv 转成 mp4 要废多大的劲,还有那么多缓存服务器要更新,与其改格式还不如在客户端下功夫
    eastlhu
    eastlhu
    Oct 26, 2016 via iPhone
    21
    不错,学习一下
    tuzkiss
    tuzkiss
    Oct 26, 2016 via iPhone
    22
    厉害了,我的谦
    cqxxxxxxx
    cqxxxxxxx
    Oct 26, 2016 via Android
    23
    问一下 html 怎么念……
    DoraJDJ
    DoraJDJ
    Oct 26, 2016
    24
    @XhstormR +1
    尤其是一些做 MAD 、鬼畜类视频的人, flv 不能直接放到 Vegas 、 AE 之类的软件里剪辑,又要转码,真的很痛苦
    66450146
    66450146
    Oct 26, 2016
    25
    @binux 我看到标题想到的也是这个……尝试召唤 @zythum
    zpole
    zpole
    Oct 26, 2016
    26
    支持~所以说什么时候 b 站直播也能换成 html5 ?
    kaneyuki
    kaneyuki
    Oct 26, 2016
    27
    这个可以啊
    zhangneww
    zhangneww
    Oct 26, 2016
    28
    一直在用 html5 版的播放器
    caonan
    caonan
    Oct 26, 2016
    29
    @wwqgtxx FLV 2 MP4 转封装的资源消耗不大,即时对外服务时实时转都可以,所有硬件资源彻底转一遍不是技术问题,而是领导决策问题
    xmoiduts
    xmoiduts
    Oct 26, 2016
    30
    我想反馈一点使用体验,本体验限于校园网。

    1 ,在 FLASH 播放器时代,贵站视频可以从头缓冲到尾。切换为 HTML5 后,常常不能缓冲全视频。应该是做了缓冲控制。
    对于一些慢速网络而言,能否提供缓冲全视频的选项,使得用户可以“养肥了再看”?

    2 ,有时 HTML5 播放器会出现“ HTTPS 连接失败,回退到 HTTP ”(大意)的字样。这是否意味着运营商做了手脚?
    marsLeo
    marsLeo
    Oct 26, 2016
    31
    对视频网站来说,用 mp4 格式要不要为专利付费?
    ChaosPark
    ChaosPark
    Oct 26, 2016
    32
    B 站 html5 播放器反馈按钮无法反馈问题,我记得看 html5 播放有几个视频很卡顿,切换到 flash 播放器就正常了。
    JoyNeop
    JoyNeop
    Oct 26, 2016
    33
    膜谦谦!
    JoyNeop
    JoyNeop
    Oct 26, 2016
    34
    不过似乎看起来不是一个全功能的 Adobe Flash Player 的 JavaScript 移植? 😂😂😂
    donlxn22
    donlxn22
    Oct 26, 2016
    35
    Better to remove the word "F**k" from the demo : )
    ctsed
    ctsed
    Oct 26, 2016 via iPhone
    36
    可以这很节能
    Tundra
    Tundra
    Oct 26, 2016
    37
    @JoyNeop 来科学群里问
    Tundra
    Tundra
    Oct 26, 2016
    38
    @jackysc 直播方面有切换至 HTML5 的计划
    addidd
    addidd
    Oct 26, 2016 via Android
    39
    兹瓷啦。。
    话说最近番剧不能跳到 av 号看了。。 flash 好卡。。
    digimoon
    digimoon
    Oct 26, 2016
    40
    支持 H.264+AAC 编码的 FLV 视频

    不如直接重新封装成 MP4
    solonF
    solonF
    Oct 26, 2016
    41
    什么时候可以支持倍速播放
    ETiV
    ETiV
    Oct 26, 2016 via iPhone
    42
    这!个!屌!!!
    jyzhengqian
    jyzhengqian
    OP
    Oct 26, 2016
    43
    @donlxn22 Fixed. 以前手抖的忘记清理了
    Khlieb
    Khlieb
    Oct 26, 2016 via Android
    44
    直播时候管用吗?
    wwqgtxx
    wwqgtxx
    Oct 26, 2016
    45
    @caonan 现实是决策层为啥要做这种没有意义的决策,从 FLV 转到 MP4 对性能没有任何的提升,却要付出大量的时间和精力去转换海量的数据,而且 B 站还有别的一堆接口还在用 flv ,为什么要做这种吃力不讨好的事情
    wwqgtxx
    wwqgtxx
    Oct 26, 2016❤️1
    46
    从我们的角度看从 FLV 实时转到 Mp4 并费不了多少精力,但是对于那么海量的用户请求,那可不是增加一点点运算量
    而且 flv 转换到 Mp4 虽然看着很简单,但是大部分情况下还是要重新封装,不是改个文件头那么简单的
    虽然从个人角度来说, MP4 格式的确兼容性好,各方面都很优越,但是从人家公司角度考虑,的确是不如在播放器上动动手脚,把运算量丢给客户端来得快,来的经济
    caonan
    caonan
    Oct 26, 2016
    47
    @wwqgtxx 我再仔细看了一遍题目后,觉得「这个场景下」通过客户端做挺好的,目前确实没有足够的理由让服务端去做这件事情,这个做法在客户端性能过剩的当下是完全说得过去的,甚至机智。

    不过还是有点期待更统一或者平滑的方式,毕竟 HTML5 都这么些年了, FLV 的普及仍旧这么高
    imgalaxy
    imgalaxy
    Oct 27, 2016 via Android
    48
    可以 这很谦谦
    ershiwo
    ershiwo
    Oct 27, 2016
    49
    这个可以,给赞。
    panlilu
    panlilu
    Oct 27, 2016
    50
    已 star
    RqPS6rhmP3Nyn3Tm
    RqPS6rhmP3Nyn3Tm
    Oct 27, 2016 via iPad
    51
    不可以以后睿站上传视频默认 MP4,老视频也别转了回退 flv ,不是更好吗
    cnbeining
    cnbeining
    Oct 27, 2016
    52
    @wwqgtxx 他选型的时候就有无数人提过了。

    然并卵。
    hellokittyer
    hellokittyer
    Oct 27, 2016
    53
    自从发现 b 站可以体验 html5 播放器后, a 站就不怎么去了
    Felldeadbird
    Felldeadbird
    Oct 27, 2016
    54
    可惜 B 站部分资源还不能 html5 播放
    okampfer
    okampfer
    Oct 27, 2016
    55
    @xmoiduts 成都电信 200M ,自从开始用 H5 播放器后,每到晚上我的体验跟你一样。
    xmoiduts
    xmoiduts
    Oct 27, 2016 via Android
    56
    还有一个问题,部分视频的前几秒会花屏,手动拖动进度条到开头后画面反而正常。怀疑第一个 I 帧解析有时出错。
    heguannantc
    heguannantc
    Oct 27, 2016
    57
    不能看直播。。 h5 看超清就卡住但是高清就很丝滑。。不过还是支持。。不就是硬币吗。。给你就是了
    nullizer
    nullizer
    Oct 27, 2016
    58
    你们怎么把 flv 、 mp4 的封装规范理清楚的……
    kaedea
    kaedea
    Oct 27, 2016
    59
    厉害了我的倩
    metalbug
    metalbug
    Oct 27, 2016
    60
    支持 H265 就好了
    ChiangDi
    ChiangDi
    Oct 27, 2016 via Android
    61
    flv 已死。。。
    datou
    datou
    Oct 27, 2016
    62
    难怪 b 站 web 端的 h5 播放器容易音画不同步
    SakuraKuma
    SakuraKuma
    Oct 27, 2016
    63
    我记得之前用过一段时间,
    很容易 fetch error
    后来就换回 flash 了。

    另外还是支持下~
    dangge
    dangge
    Oct 27, 2016
    64
    1000star 贺电
    for8ever
    for8ever
    Oct 27, 2016
    65
    JavaScript 可以转换视频格式了呀?
    xjbeta
    xjbeta
    Oct 27, 2016
    66
    问题来了 直播什么时候支持 html5
    cesar
    cesar
    Oct 27, 2016
    67
    @datou 我也是这样, HTML5 播放器,播放时间一长,就音画不同步了,必须重新拖一下进度条才行
    bsklqgy
    bsklqgy
    Oct 27, 2016
    68
    youku 居然还不 html5
    typcn
    typcn
    Oct 27, 2016
    69
    @datou
    @SakuraKuma
    @cesar
    音画不同步是 Safari 的 BUG , Safari 播放任何格式任意编码的视频时间长了都这样。

    Fetch Error 是由于运营商的 302 劫持导致的,因为 HTML5 有 CORS 限制, preflight 的请求如果遇到 302 会直接失败, preflight 成功之后如果再响应 302 也会直接失败,所以只能在无劫持的情况下使用
    moyang
    moyang
    Oct 27, 2016
    70
    支持一个。我们做的产品也有很多相似之处,对于 flash html5 mediasource extension hls.js hls 安卓原生 hls safari 原生当中的各种坑真是深有感触

    flash 已经为我们做得够多。在视频播放领域,就让它安静地退休吧!
    zuoxiaomo
    zuoxiaomo
    Oct 27, 2016❤️1
    71
    @jackysc 昨晚也遇到了,更新下 adobe flash player 就可以了
    LeoEatle
    LeoEatle
    Oct 27, 2016
    72
    @Akarin flv 是历史原因了吧...我记得我当年还在 B 站发视频时都用的 flv...
    zuoxiaomo
    zuoxiaomo
    Oct 27, 2016
    73
    B 站看电影偶尔遇到音 /视频不同步问题( HTML5 )。。。
    SakuraKuma
    SakuraKuma
    Oct 28, 2016
    74
    @typcn

    原来这样,谢谢解答,这几个月的确被劫持好烦..
    missingbobo
    missingbobo
    Oct 28, 2016
    75
    @liujun3712 嗯,最好还要解决手机端看视频耗流量的问题
    nikubenki
    nikubenki
    Oct 29, 2016
    76
    滋瓷
    xiaofami
    xiaofami
    Oct 29, 2016 via Android
    77
    在 PS4 上全屏观看 bilibili 视频时每隔几秒便会闪现一下加载视频的小圆圈。进度条加载很快,不是网络问题。
    andypinet
    andypinet
    Oct 31, 2016
    78
    全地图炮 如果 b 站用这个搞定 rtmp 我就让他叫我爹
    akinoneko
    akinoneko
    Nov 1, 2016
    79
    赶快干死 flash
    shui14
    shui14
    Nov 1, 2016
    80
    视频还是拼带宽,体验是最重要的, websocket 推流?
    ianzhou233
    ianzhou233
    Nov 1, 2016 via Android
    81
    chrome 已经设置里面手动关闭 flash 了, chromebook 性能有限。似乎国内就 b 站 HTML5 。
    jyzhengqian
    jyzhengqian
    OP
    Nov 1, 2016
    82
    @shui14 推流还是原生 rtmp 啊。目前来讲并没有在 web 端推流的需求吧
    redbelt
    redbelt
    Nov 25, 2016
    83
    demo 怎么用不了 <input name="urlinput" class="urlInput" type="text" value="http://127.0.0.1/flv/7182741.json"/>

    我把这个地址换乘我 flv 的地址也不行。。

    VM47:1 Uncaught SyntaxError: Unexpected token F in JSON at position 0(…) 报错
    redbelt
    redbelt
    Nov 25, 2016
    84
    woorst
    woorst
    Apr 30, 2017
    85
    直播什么时候也能支持呢...
    ibegyourpardon
    ibegyourpardon
    Aug 29, 2017
    86
    经过了一起事件之后再看这个帖子真的是物是人非造化弄人也不知道现在怎样了。
    abc635073826
    abc635073826
    May 21, 2019
    87
    @jyzhengqian flv.js 支持 rtmp 推流的方式么?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2429 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 181ms · UTC 14:56 · PVG 22:56 · LAX 06:56 · JFK 09:56
    ♥ Do have faith in what you're doing.