最近单位要进行网络直播电视的开发工作,基本上在网上找不到相应的资料。但现在网络直播做出来了,做简要的讲解希望能给后来开发者提供一定的帮助。自己写的测试工具如下:

不论是点播还是直播,重要的部分不外乎都是数据源和数据播放两个方面。对于播放没什么特殊性,现在我针对直播的特殊地方,M3U8的解析进行说明。仅仅是个人见解。有不足的地方,望各位大牛们指出。

我们通过CCTV-3的网络直播地址进行分析http://t.live.cntv.cn/m3u8/cctv-3.m3u8。通过上个地址可以获得如下的内容:

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=500000
http://ipad.vsdn.tv380.com/5B63686E5D445830303030303034367C313635367C317C313030307C434354562D337C687474707C74735B2F63686E5D5B74735D307C687474705B2F74735DVSDNSOOONERCOM00/cctv3.m3u8

其中EXT-X-STREAM-INF字段,说明了关于所属下载地址的相关信息。当然有些字段需要,有些字段不需要,重点看你的具体需求。而我主要利用了BANDWIDTH,一般我会取其中最高的一个。例如CCTV5中就包含了两个下载地址:

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=500000
http://ipad.vsdn.tv380.com/5B63686E5D445830303030303034367C313735397C317C313030307C434354562D357C687474707C74735B2F63686E5D5B74735D307C687474705B2F74735DVSDNSOOONERCOM00/cctv5.m3u8#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=64000
http://220.181.168.111:80/interface/ipad/vid/63/ipad.m3u8

接下来我们通过CCTV3中提供的数据链接获取地址为例。http://ipad.vsdn.tv380.com/5B63686E5D445830303030303034367C313635367C317C313030307C434354562D337C687474707C74735B2F63686E5D5B74735D307C687474705B2F74735DVSDNSOOONERCOM00/cctv3.m3u8,获取到一下内容:(郁闷了,得不到下一级内容了。数据都在单位内,只能用网上能找到的链接地址了。改天有时间再行替换。)

#EXTM3U
#EXT-X-MEDIA-SEQUENCE:1356094361
#EXT-X-TARGETDURATION:10
#EXTINF:10,
cctv3_00_20121221201800.ts
#EXTINF:11,
cctv3_00_20121221201810.ts
#EXTINF:10,
cctv3_00_20121221201820.ts

其中#EXTINF:10, cctv3_00_20121221201800.ts,标记了一个TS下载片段和时长。我们还需注意就是#EXT-X-MEDIA-SEQUENCE:1356094361,这个字段标记了此M3U8下载的片段的序号。以上为了分别是1356094361,1356094362, 1356094363,相应序号。为了防止出现记录下载列表出现片段冲突的情况,最好在数据结构里定义序列号。我们通过频繁的刷新http://ipad.vsdn.tv380.com/5B63686E5D445830303030303034367C313635367C317C313030307C434354562D337C687474707C74735B2F63686E5D5B74735D307C687474705B2F74735DVSDNSOOONERCOM00/cctv3.m3u8片可以不间断的获取到实时TS片段的下载地址,并不断的将其存放在队列中。

注意以下下几点问题:

1、不要将片段在队列中冲突了。

2、一定要将#EXT-X-STREAM-INF字段进行解析过程和片段解析过程放到一起,因为有时服务器会突然更换下载片段M3U8地址。

3、注意一次m3u8获取到的片段个数,从而得到一次获取到的总的播放时长。进而安排好程序下次刷新的时间间隔。

4、一定要设定下载的超时时间,不能无限等待。拿不到的片段,果断丢弃。

5、片段序号总有一个时间点上会被归为0或1(不同的源不一样),提前处理做好准备。

暂时可以想到的就这些了,如果有疑问可以留言。

网络直播电视之M3U8解析篇(上)相关推荐

  1. 网络直播电视之M3U8解析篇 (下)

    网络直播电视之M3U8解析篇 (下) 标签: c++C++directshowDirectshowDirectShow网络直播视频 2012-12-26 13:04 43004人阅读 评论(8) 收藏 ...

  2. 网络直播电视之M3U8解析篇

    原文 最近单位要进行网络直播电视的开发工作,基本上在网上找不到相应的资料.但现在网络直播做出来了,做简要的讲解希望能给后来开发者提供一定的帮助.自己写的测试工具如下: - 不论是点播还是直播,重要的部 ...

  3. 网络直播电视之寻找直播地址(下)

    接上文,上文中提到获取网络直播电视地址的方法,但是大量信息需要人工的方式进行处理,过于麻烦.所以本文针对三级的XML解析和下载工作进行处理. 技术点:1.利用tinyXML完成XML的解析工作  ti ...

  4. 网络直播电视之寻找直播地址

    这种方式也不知道能坚持多长时间,暂时是没有什么问题.方法如下: 访问http://trailers.apple.com/appletv/index.xml 可以看到'http://atv.jiangu ...

  5. python3 爬虫实例_【实战练习】Python3网络爬虫快速入门实战解析(上)

    原标题:[实战练习]Python3网络爬虫快速入门实战解析(上) 摘要 使用python3学习网络爬虫,快速入门静态网站爬取和动态网站爬取 [ 前言 ] 强烈建议:请在电脑的陪同下,阅读本文.本文以实 ...

  6. 网络直播电视之寻找直播地址(上)

    这种方式也不知道能坚持多长时间,暂时是没有什么问题.方法如下: 访问http://trailers.apple.com/appletv/index.xml 可以看到'http://atv.jiangu ...

  7. 电视信号网络直播方案

    下图是整个电视信号网络直播点播系统的工作流程图 特别说明以下几点: 1. 高清视频编码服务器技术要求: ? 支持视频H.264编码.音频AAC编码 ? 以把编码完成的视频流以RTMP协议推流到800L ...

  8. apple tv 开发_如何在Apple TV上观看直播电视

    apple tv 开发 If you want to watch live TV on your Apple TV-cable or antenna-it's relatively easy to s ...

  9. 【历史上的今天】8 月 22 日:改变世界的程序员们;网络直播的鼻祖;何小鹏离开阿里巴巴

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天 2022 年 8 月 22 日.历史上的今天,Masatoshi Shima 出生,他和 英特尔(Intel) 合作 ...

最新文章

  1. bzoj2527: [Poi2011]Meteors
  2. python视频教程云盘-Python自动化测试视频教程【百度云盘下载】
  3. EF中的Code First
  4. Clickhouse 在腾讯的应用实践
  5. JAVAWEB入门之Servlet的注解配置
  6. Linux笔记-rpm与yum的基本概念
  7. VC++中使用内存映射文件处理大文件
  8. flutter 拖拽布局_Flutter 史上最牛拖动控件 Draggable
  9. 什么?是Transformer位置编码
  10. 花书+吴恩达深度学习(二)非线性激活函数(ReLU, maxout, sigmoid, tanh)
  11. asp.net gridview 模板列 弹出窗口编辑_Mac桌面多窗口整理工具Moom,使用教程
  12. ubuntu启动配置ftp服务端
  13. Java的文件读写操作
  14. win7精简_微软从未公开的win10版本,3GB+极度精简,老爷机总算有救了!
  15. Gis系统中常见的格式
  16. 通过命令行使用bandizip压缩与解压
  17. 矩阵转置算法 oracle,请编写程序fun,函数的功能是:实现B=A+Aˊ,即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main函...
  18. 最新YGbook小说网自适应源码 自动采集笔趣阁 附详细图文安装教程
  19. 刺激战场春节版年兽全网最详细位置,另附刺激战场更新内容
  20. Windows环境下Nexus的下载与安装

热门文章

  1. 使用photoshop 修复旧照片
  2. python爬取大众点评_Python爬虫,获取大众点评上海地区的餐饮信息!
  3. 青岛医院计算机招聘试题及答案,2020青岛市妇女儿童医院招聘试题及答案解析...
  4. 效率工具篇 — 密码管理器 1Password 2020/5/27 21:09
  5. 文件系统之super_block
  6. 谷歌浏览器打开index.html原型页面axure_chrome_V0.6.3
  7. com.qualcomm.qti.qdma 简单介绍
  8. vscode配置tpl文件关联html语言
  9. SQL三种连接:内连接、外连接、交叉连接
  10. HDU 3440 House Man (差分约束)