作者:蒲小花
链接:https://www.zhihu.com/question/21087379/answer/252216119
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最近接触了这一块,简单说下吧。

m3u8 是一种基于 HTTP Live Streaming 文件视频格式,它主要是存放整个视频的基本信息和分片(Segment)组成。目前 由 Apple.inc 率先提出的 HLS 协议在 Mac 的 Safari 上原生支持,你可以直接通过

video.src = 'xxx.m3u8'

来实现。

如果你希望兼容所有的浏览器的话, 你需要知道 Chrome 和 Firefox 支持的 Media Source Extensions( 非常不理想,在IE和国内具备兼容模式的极速浏览器下) 的情况:

目前 Youtube 和 Netflix 等主流视频网站,即使 FB 的 newsfeed 里面的视频也采用了 HLS 的解决方案,大致实现流程如下:

其核心,在于对于 m3u8 的文件解析和 通过 XHR 去完成对分片内容二进制文件的获取,然后使用 MSE 的 appendBuffer 去进行 buffer 的封装,然后自己完成合流的工作。

目前国内的,bilibili 最早实现了基于 MSE 解决方案的播放器,大概为什么他们必须用 MSE 而不是 优酷 和 腾讯 的 多 video 方案,可能是钱少,视频转MP4需要大量服务器,当然 MSE 这是技术的趋势。

前面废话太多直接上推荐吧:

优先推荐 video.js 的方案,因为它支持多个播放核心,而且插件非常多,你只需要使用

videojs/videojs-contrib-hls 就可以了。

再安利一个非常纯粹的方案,就是 hls.js 它需要你手进行 video 的绑定。

75 Team 也开源 的一个播放器:Chimeejs/chimee

当然我们 team 也会开源一款类似 youtube 的播放核心。

H5解决m3u8视频直播流问题相关推荐

  1. VLC插件在浏览器下(IE11)实现播放rtsp视频直播流

    VLC插件 最近项目用到需要在浏览器上播放视频流,尝试了很多种方式去解决,包括使用ffmpeg转码成rtmp播放,websocket结合webrtc等方式,但是效果都不是很好,而且存在一定的丢包和搭设 ...

  2. 网页视频直播流-ffmpeg-kurento

    视频直播流(摄像头之类的) ​ 一直以来没有做过页面播放直播的连接,都是播放一些用户上传的固定视频之类的,现有的video标签基本就能满足需求.但是遇到直播的连接的时候,需要一些插件进行解码辅助才能进 ...

  3. 解决m3u8视频合并问题

    解决m3u8视频合并问题 参考文章: (1)解决m3u8视频合并问题 (2)https://www.cnblogs.com/jinfanfu/p/10817818.html (3)https://ww ...

  4. 网页直播/点播播放器支持WebRTC/http-flv/rtmp/m3u8等直播流播放

    H5播放器 H5直播/点播播放器,使用简单,功能强大 支持WebRTC播放; 支持MP4播放; 支持m3u8/HLS播放; 支持HTTP-FLV/WS-FLV播放; 支持RTMP播放; 支持直播和点播 ...

  5. vue实现rtsp视频直播流

    实现摄像头的直播功能其实有许多方案,像是安装vlc插件.rtsp转rtmp然后使用videojs通过flash播放rtmp**(由于chrome已经不使用flash所以放弃使用videojs,并且vi ...

  6. 【视频直播流】vue flv视频直播流 flv rtmp vue 直播视频流

    一.[rtmp视频流] 要点:主要是使用vue-video-player进行播放.要注意,这种播放方式需要flash播放器,遗憾的是很多浏览器已经不再支持flash播放器,如果是这样建议直接看下边第二 ...

  7. LiveNVR视频流媒体服务器软件支持配置通道视频宽、视频高、视频码率降低码流输出视频直播流

    支持通道配置支持配置备注标记通道的额外信息 1.通道编辑 2.显示高级配置 3.配置视频宽.视频高.视频码率 4.RTSP/HLS/FLV/RTMP拉流Onvif流媒体服务 1.通道编辑 2.显示高级 ...

  8. 【技能教学】如何通过FFMPEG编码推RTSP视频直播流到EasyDarwin开源平台时叠加时间水印?

    继之前一篇科普文<如何使用RTSP推流组件EasyPusher将MP4文件推到EasyDarwin开源平台>发布后,有开发者提出疑问:假如需要显示视频直播时间,如何在推送的时候可以自定义在 ...

  9. 如何通过FFMPEG编码推RTSP视频直播流到EasyDarwin开源平台时叠加时间水印?

    继之前一篇科普文<如何使用RTSP推流组件EasyPusher将MP4文件推到EasyDarwin开源平台>发布后,有开发者提出疑问:假如需要显示视频直播时间,如何在推送的时候可以自定义在 ...

最新文章

  1. 模版方法模式/Template Method
  2. python经典小游戏-用Python设计一个经典小游戏:猜大小
  3. python教程:循环(while和for)
  4. 【❌❌深入浅出,九浅一深⭕⭕】《深入理解计算机系统》CSAPP
  5. 实现水电气一卡通 IC卡扇区分配
  6. 今天聊:做好前端的 10 个习惯
  7. 第 26 章 职责链模式
  8. pathway一些网站
  9. 中乘风简书博文说明-风者须知
  10. TCP/IP模型背后的内涵(一)
  11. Redis - increment 递增方法 | 处理防重复和并发问题
  12. Grafana接入Elasticsearch数据,绘制dashboard
  13. 对LMAX架构以及Event Sourcing模式的一些新思考和问题的记录
  14. [Android]混淆Android代码
  15. Redis(9)——史上最强【集群】入门实践教程
  16. 十年量化交易经验精华总结
  17. 用python整个活(2)——用numpy做一个蜘蛛纸牌
  18. kafka-整理-重试机制
  19. ubuntu进去安全模式_win10和Ubuntu双系统,无法开机如何进入win10安全模式
  20. C语言-八道题深入理解c指针

热门文章

  1. c语言mkdir函数,c函数mkdir无法创建目录,该怎么处理
  2. 技嘉主板常见问题解答
  3. undefined reference to symbol xxxxx和undefined symbol:xxxx错误的原因分析以及解决方法
  4. UnityAI行为-----群组行为之群集动画
  5. 服务器硬件知识普及篇(需要配置服务器的朋友可以参考)
  6. 基于Java的图形化中国象棋游戏+PPT文档
  7. 数据库三大范式(通俗理解)
  8. 2021年互联网公司“死亡”名单! 2022 年跳槽一定要谨慎些!
  9. 高端大气的Emlog后台登陆界面模板
  10. 苹果加快自研处理器!M1X、M2齐曝光