HLS协议实现_weixin_34080903的博客-程序员宅基地

一.HLS介绍

HLSHttp Live Streaming 是由Apple公司定义的用于实时流传输的协议,HLS基于HTTP协议实现,传输内容包含两部分,一是M3U8描写叙述文件,二是TS媒体文件。

1、M3U8文件

   用文本方式对媒体文件进行描写叙述,由一系列标签组成。

#EXTM3U

#EXT-X-TARGETDURATION:5

#EXTINF:5,

./0.ts

#EXTINF:5,

./1.ts

#EXTM3U:每一个M3U8文件第一行必须是这个tag

#EXT-X-TARGETDURATION:指定最大的媒体段时间长度(秒),#EXTINF中指定的时间长度必须小于或等于这个最大值。该值仅仅能出现一次。

#EXTINF:描写叙述单个媒体文件的长度。后面为媒体文件,如./0.ts 

   

2、TS文件

DVB定义的文件格式,用于音视频的网络传输,当中音视频按时间戳进行交织。每一个数据包大小为188个字节。

二.HLS实现类结构图

 

CHLSServer:进行Socket侦听,管理所的clientHLS请求。

CHLSClient:实现HTTP的请求响应,依据client请求的HLS内容,交给CHLSSource进行处理。

CHLSSourceManager:全部HLS源管理器,HLS源能够是本地的文件,也能够是来自网络或设备的实时数据源。

CHLSSource:实现详细的HLS请求,包含M3U8文件获取和TS片段的获取。

三.代码片段

 

 ------------------------------

 QQ:46687284,欢迎交流合作。

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34080903/article/details/85662006

智能推荐

算法与数据结构——零、目录_桥苯环萘我老婆的博客-程序员宅基地

目录前oier最后的倔强。看着名词都是会过的,至少曾经会用来装逼啊!感谢王争大佬在课程上的总结之后的总结可能是自己整合,不会与专栏利益相关数据结构部分一、线性表1、数组2、链表* 单链表 * 双向链表 * 循环链表 * 双向循环链表 * 静态链表3、栈* 顺序栈 * 链式栈4、队列* 普通队列 * 双端队列 * 阻塞队列...

shell if_金士顿的博客-程序员宅基地

 if 语句语法格式:if conditionthen command1 command2 ... commandN fi写成一行(适用于终端命令提示符):if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi末尾的fi就是if倒过来拼写,后面还会遇到类似的。if e...

springboot + mybatis plus实现多表联查分页_weixin_33913332的博客-程序员宅基地

1 配置分页插件public class MybatisPlusConfig { @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } @Bean public PerformanceInterce...

SSH2 协议详解_大刘同学的博客-程序员宅基地

SSH:安全外壳协议  一、SSH介绍  什么是SSH?ssh  传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓“中间人”的攻击方式,就是“中间人”...

stm32cubeMX+vscode开发编译调试stm32程序_cubemx vscode_锋利的阿帕奇的博客-程序员宅基地

stm32cubeMX+vscode开发编译调试stm32程序安装vscode安装make工具安装交叉编译工具链安装openocd安装clang llvm生成并编译代码配置vscode安装插件配置文件c_cpp_properties.jsonlaunch.json下载和调试代码stm32单片机的开发使用哪个IDE比较好呢,这是这两年开发stm32程序以来一直在探索的。一开始刚刚进入机器人队,学...

大话Verilog-Verilog入门(四)_EE林的博客-程序员宅基地

上一篇我们介绍了Verilog模块先生是由描述端口部分和描述逻辑部分组成的。 这一篇我们就展开聊聊这两个部分。一、 描述端口部分一般会描述端口的输入和输出。在两个地方声明1为头顶的module 模块名(口1,口2……),这里是看不出该口是输入还是输出的,仅仅知道有这么多个端口吧了, 如果要在这里知道他是输入还是输出口,我们是这样子写的: module 模块名(input口...

随便推点

走过19年,每年千万下载量,科学计算开源库SciPy的前世今生_Evan-yzh的博客-程序员宅基地

点击上方“AI遇见机器学习”,选择“星标”公众号重磅干货,第一时间送达转自:机器之心每年千万下载量,科学计算开源库 SciPy,你已经是个成熟的小伙伴了。作为科学计算中的中流砥柱,Sci...

Linux系列之使用sed命令来排查日志_sed 查询日志_smileNicky的博客-程序员宅基地

对于后端开发来说,定位日志很重要,可以加快bug的处理效率,之前习惯了使用tail -fn 100 test.logs,然后再用/加上关键字,定位日志内容,不过如果日志内容太多,不太好排查问题,就需要将日志截取到本地,这时候可以使用sed命令将日志截取到本地

Anaconda3环境下tensorflow导入错误:ModuleNotFoundError: No module named 'tensorflow'_环境变量中的tensorflow弄不上咋回事_CAU_Ayao的博客-程序员宅基地

安装环境:Ubuntu18.04+CUDA9.0+cuDNN7.5+Anaconda3.5+Python3.6+TensorFlow1.8TensorFlow安装教程参考:Ubuntu18.04下基于Anaconda安装TensorFlow1.8-GPU安装完TensorFlow,在导入的时候出现以下错误:ModuleNotFoundError: No module named 'tenso...

SAP的一些基本使用技巧_sap 选择画面 正数_sunfeng8848的博客-程序员宅基地

转自:http://qzone.qq.com/blog/82322872-12198920651 关于SAP的menu现实tcode实现    菜单 “extras”---"setting" ,选择 “display technical names”,回车。 2 设定一个输入框的默认值    光标在该输入框(栏位--台湾人叫法),F1,单击“Technical information”,记住“

iOS-申请邓白氏编码的超详细流程介绍_互联网行者的博客-程序员宅基地

导读11.22号要申请苹果公司开发者账号,所以当天下午申请了邓白氏编码,昨天邓白氏编码下来了,这里就做一下记录,分享给大家。概览11.22提交的邓白氏编码申请,11.28(礼拜一)华夏邓白氏发来邮件,填写完公司详细信息后,当天晚上DUNS(邓白氏)编码就下来了。历时4个工作日,期间没有给华夏邓白氏和苹果打过电话,没有发过邮件。如果您的项目比较着急的话,可以给华夏

numpy中tril和triu的使用效果_坎康的博客-程序员宅基地

import numpy as npA = np.array([[1,2,3],[2,3,2],[1,2,1]])print(np.triu(A,-1))print(np.tril(A,-1))[[1 2 3] [2 3 2] [0 2 1]][[0 0 0] [2 0 0] [1 2 0]]

推荐文章

热门文章

相关标签