一种hls在线转码方法及系统的制作方法

文档序号:10627208阅读:1150来源:国知局
一种hls在线转码方法及系统的制作方法
【专利摘要】本发明公开了一种HLS在线转码方法及系统,所述方法包括:根据预先配置下载高码率HLS音视频流并获取相应的M3U8文件;根据所述M3U8文件解码所述高码率HLS音视频流得到相应的TS流数据;将所述TS流数据重新封装成为低码率的TS流数据并生成相应的低码率M3U8文件;根据用户需求返回所述低码率M3U8文件和相应低码率的TS流数据。本发明实施例的方案,能够实现将2.5M高码率HLS直播转换输出3路低码率(150kbps,300kbps,450kbps)的HLS直播,极大的提高了用户体验度。
【专利说明】
一种HLS在线转码方法及系统
技术领域
[0001] 本发明涉及互联网技术领域,特别涉及一种HLS在线转码方法及系统。
【背景技术】
[0002] HLS (HTTP Live Streaming)是Apple (苹果)公司的动态码率自适应技术。主要 用于PC (个人电脑)和Apple终端的音视频服务。包括一个M3U8的索引文件,TS媒体分 片文件和ke加密串文件。
[0003] 常用的流媒体协议主要有HTTP渐进下载和基于RTSP/RTP的实时流媒体协议,这 二种基本是完全不同的东西,目前比较方便又好用的是用HTTP渐进下载方法。在这个中 Apple公司的HTTP Live Streaming是这个方面的代表。它最初是苹果公司针对iPhone、 iPod、iTouch和iPad等移动设备而开发的流.现在见到在桌面也有很多应用了,HTML5是 直接支持这个。
[0004] 但是HLS协议的小切片方式会生成大量的文件,存储或处理这些文件会造成大量 资源浪费。如果要实现数天的时移,索引量将会是个巨额数字,并明显影响请求速度。因此, HLS协议对存储I/O要求相当苛刻。对此,也有公司提出了非常好的解决方案。新型点播服 务器系统,独创了内存缓存数据实时切片技术,颠覆了这种传统实现方法,从根本上解决了 大量切片的碎片问题,使得单台服务器的切片与打包能力不再是瓶颈。其基本原理如下:
[0005] 不将TS切片文件存到磁盘,而是存在内存当中,这种技术使得服务器的磁盘上面 不再会有"数以吨计"的文件碎片,极大减少了磁盘的I/O次数,延长了服务器磁盘的使用 寿命,极大提高了服务器运行的稳定性。同时,由于使用这种技术,使得终端请求数据时直 接从服务器的内存中获取,极大提高了对终端数据请求的反应速度,优化了视频观看体验。
[0006] 视频码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps 即千位每秒。通俗一点的理解就是取样率,单位时间内取样率越大,精度就越高,处理出来 的文件就越接近原始文件,但是文件体积与取样率是成正比的,所以几乎所有的编码格式 重视的都是如何用最低的码率达到最少的失真,围绕这个核心衍生出来的cbr (固定码率) 与vbr (可变码率),都是在这方面做的文章,不过事情总不是绝对的,举例来看,对于一个 音频,其码率越高,被压缩的比例越小,音质损失越小,与音源的音质越接近。
[0007] 当前的音视频应用必须面对各种不同的播放客户端,从PC端(Web)开始,到智能 手机。这些播放客户端有不同的尺寸,因而需要不同的视频分辨率。不同的客户端也会有 不同的网络环境,比如PC上通常都有WiFi或有线网络,有较高的带宽保证,而手机、平板电 脑在室外时,使用2G/3G网络,往往带宽不足,或者不稳定。因而需要针对不同的网络环境 采用不同的码率。
[0008] 现有技术中,常规的HLS直播流都是512k,800k,1. 5M,2. 5M的高码率直播流,对于 网络情况比较差,想用比较低码率的HLS直播流来说无法满足要求。因而,亟需要一种新的 可以满足用户对不同码率需求的方案,以提高用户体验度。

【发明内容】

[0009] 本发明提供一种HLS在线转码方法及系统,用以解决现有技术中无法支持用户对 不同码率需求的问题。
[0010] 本发明提供一种HLS在线转码方法,包括:
[0011] 根据预先配置下载高码率HLS音视频流并获取相应的M3U8文件;
[0012] 根据所述M3U8文件解码所述高码率HLS音视频流得到相应的TS流数据;
[0013] 将所述TS流数据重新封装成为低码率的TS流数据并生成相应的低码率M3U8文 件;
[0014] 根据用户需求返回所述低码率M3U8文件和相应低码率的TS流数据。
[0015] 所述方法还包括:
[0016] 将下载的高码率HLS音视频流根据相应的M3U8文件获取相应的TS文件并拼接成 相应的TS流;
[0017] 根据所述TS流解码得到相应的TS流数据。
[0018] 所述方法还包括:
[0019] 将所述TS流数据根据X264编码器重新封装成为低码率的TS流数据。
[0020] 所述方法还包括:
[0021 ] 将所述TS流数据重新编码为低码率的h264和aac数据;
[0022] 将所述h264和aac数据重新封装为低码率的TS流数据。
[0023] 所述方法还包括:
[0024] 根据php动态生成所述低码率M3U8文件。
[0025] 所述方法还包括:
[0026] 通过Nginx发布所述低码率的TS流数据为HLS直播流。
[0027] 一种HLS在线转码系统,包括:
[0028] 下载单元,用于根据预先配置下载高码率HLS音视频流并获取相应的M3U8文件;
[0029] 解码单元,用于根据所述M3U8文件解码所述高码率HLS音视频流得到相应的TS 流数据;
[0030] 封装单元,用于将所述TS流数据重新封装成为低码率的TS流数据并生成相应的 低码率M3U8文件;
[0031] 发布单元,用于根据用户需求返回所述低码率M3U8文件和相应低码率的TS流数 据。
[0032] 所述系统还包括:
[0033] 拼接单元,用于将下载的高码率HLS音视频流根据相应的M3U8文件获取相应的TS 文件并拼接成相应的TS流;
[0034] 所述解码单元根据所述TS流解码得到相应的TS流数据。
[0035] 所述系统还包括:
[0036] 编码单元,用于将所述TS流数据重新编码为低码率的h264和aac数据;
[0037] 所述封装单元将所述h264和aac数据重新封装为低码率的TS流数据。
[0038] 所述系统还包括:
[0039] M3U8动态生成单元,用于根据php动态生成所述低码率M3U8文件。
[0040] 本发明实施例根据预先配置下载高码率HLS音视频流并获取相应的M3U8文件;根 据所述M3U8文件解码所述高码率HLS音视频流得到相应的TS流数据;将所述TS流数据重 新封装成为低码率的TS流数据并生成相应的低码率M3U8文件;根据用户需求返回所述低 码率M3U8文件和相应低码率的TS流数据。本发明实施例的方案,能够实现将2. 5M高码率 HLS直播转换输出3路低码率(150kbps,300kbps,450kbps)的HLS直播,极大的提高了用户 体验度。
[0041] 本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变 得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明 书、权利要求书、以及附图中所特别指出的结构来实现和获得。
[0042] 下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
【附图说明】
[0043] 附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实 施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
[0044] 图1为本发明实施例1提供的一种HLS在线转码方法原理流程图;
[0045] 图2为本发明实施例3提供的一种HLS在线转码系统结构示意图。
【具体实施方式】
[0046] 以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实 施例仅用于说明和解释本发明,并不用于限定本发明。
[0047] 如图1所示,为本发明实施例1提供的一种HLS在线转码方法原理流程图,其中,
[0048] 步骤11,根据预先配置下载高码率HLS音视频流并获取相应的M3U8文件。
[0049] 本实施例中,首先需要获取高码率的HLS音视频流。这里对于HLS流的获取,可以 根据预先设定的下载策略进行,也可以根据用户指定的地址进行。例如,可以预先配置好下 载策略,在策略生效后,根据该下载策略进行具体的下载。
[0050] 通常,HLS是Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频 服务。包括一个M3U8的索引文件,TS媒体分片文件和ke加密串文件。M3U8也是一种M3U, 只是它的编码格式是UTF-8格式。M3U用Latin-Ι字符集编码。M3U是歌曲的目录信息,下 载FLAC无损格式的音频时候,会伴随一个M3U目录文件。
[0051] HLS的分段策略,基本上推荐是10秒一个分片,当然,具体时间还要根据分好后的 分片的实际时长做标注通常来说,为了缓存等方面的原因,在索引文件中会保留最新的三 个分片地址,以类似"滑动窗口"的形式,进行更新。M3U8,是HTTP Live Streaming直播的 索引文件。M3U8基本上可以认为就是.m3u格式文件,区别在于,M3U8文件使用UTF-8字符 编码。
[0052] 例如,具体如下所示:
[0053] 宽等。
[0055] 因而,获取相应的M3U8文件,就获得了 HLS音视频流的索引,可以据此解码HLS音 视频流文件为TS文件。
[0056] 步骤12,根据M3U8文件解码高码率HLS音视频流得到相应的TS流数据。
[0057] 将下载的高码率HLS音视频流根据相应的M3U8文件获取相应的TS文件并拼接成 相应的TS流;根据TS流解码得到相应的TS流数据。
[0058] 将TS流数据根据X264编码器重新封装成为低码率的TS流数据。
[0059] M3U8下载模块根据配置文件会下载2. 5M码率的M3U8直播流,把下载的M3U8直播 流交给TS拼接模块拼成TS直播流用存入共享内存中。TS解压缩模块会从共享内存中取出 TS直播流数据进行解压缩,解出视频数据和音频数据。
[0060] M3U8文件在IOS device和mac上可以用http的方式进行分发,其中playlist标 准为由m3u扩展而来的M3U8文件,媒体文件为MPEG2-TS或者AAC文件(audio only)。
[0061] M3U8文件有两种应用场景:
[0062] 1、多码率适配流。
[0063] #EXTM3U
[0064] #EXT-X-STREAM-INF:PROGRAM-ID = 1, BANDWIDTH = 1280000
[0065] http://example, com/low. M3U8
[0066] #EXT-X-STREAM-INF:PROGRAM-ID = 1, BANDWIDTH = 2560000
[0067] http://example, com/mid. M3U8
[0068] #EXT-X-STREAM-INF:PROGRAM-ID = 1, BANDWIDTH = 7680000
[0069] http://example, com/hi. M3U8
[0070] #EXT-X-STREAM-INF: PROGRAM-ID = 1, BANDWIDTH = 65000, CODECS = "mp4a. 40. 5"
[0071] http://example, com/audio-only. M3U8
[0072] 2、单码率适配流。
[0073] #EXTM3U
[0074] #EXT-X-TARGETDURATI0N:5220
[0075] #EXTINF :5220,
[0076] http://media, example, com/entire, ts
[0077] #EXT-X-ENDLIST
[0078] 国际标准组织对此的定义为:
[0079] rfc doc:http://tools, ietf. org/html/draft-pantos-http-1ive-streaming-〇 6
[0080] M3U8文件是m3u文件的扩展。在该rfc中定义了扩展的关键字,其中:
[0081] #EXT-X-TARGETDURATION
[0082] 定义每个TS的最大的duration。
[0083] #EXT-X-MEDIA-SEQUENCE
[0084] 定义当前M3U8文件中第一个文件的序列号,每个ts文件在M3U8文件中都有固定 唯一的序列号,该序列号用于在MBR时切换码率进行对齐。
[0085] SEXT-X-KEY
[0086] 定义加密方式和key文件的url,用于取得16bytes的key文件解码ts文件。
[0087] 属性:
[0088] METHOD
[0089] URL
[0090] #EXT-X-PR0GRAM-DATE-TIME
[0091] 第一个文件的绝对时间
[0092] #EXT-X-ALL0ff-CACHE
[0093] 是否允许cache。
[0094] #EXT-X-ENDLIST
[0095] 表明M3U8文件的结束。live M3U8没有该tag。
[0096] #EXT-X-STREAM-INF
[0097] 属性:
[0098] BANDWIDTH 指定码率
[0099] PROGRAM-ID 唯一 ID
[0100] CODECS指定流的编码类型
[0101] #EXT-X-DISC0NTINUITY
[0102] 当遇到该tag的时候说明以下属性发生了变化:
[0103] file format
[0104] number and type of tracks
[0105] encoding parameters
[0106] encoding sequence
[0107] timestamp sequence
[0108] #EXT-X_VERSI0N该属性用不用都可以,可以没有。
[0109] M3U8分顶级M3U8和二级M3U8,顶级M3U8主要是做多码率适配的,二级M3U8才是 真正的切片文件,客户端默认会首先选择码率最高的请求,如果发现码率达不到,会请求郊 低码率的流。
[0110] 一个实际使用中的顶级M3U8文件如下:
[0111] #EXTM3U
[0112] #EXT-X-STREAM-INF:PROGRAM-ID = 201273221265, BANDWIDTH = 358400
[0113] 11.M3U8
[0114] #EXT-X-STREAM-INF:PROGRAM-ID = 201273221265, BANDWIDTH = 972800
[0115] 22.M3U8
[0116] 上面顶级M3U8文件中又定义了 11.M3U8和22.M3U8两个二级文件,客户端会选择 其中一个获取其内容。
[0117] 二级M3U8文件内容如下:
[0118] #EXTM3U
[0119] #EXT-X-VERSI0N:1
[0120] #EXT-X-TARGETDURATION:10
[0121] #EXT-X-MEDIA-SEQUENCE:0
[0122] #EXTINF:3,
[0123] 1-4. ts
[0124] #EXTINF:8,
[0125] 1-6. ts
[0126] #EXTINF:8,
[0127] 1-8. ts
[0128] #EXTINF:8,
[0129] 1-10. ts
[0130] #EXTINF:8,
[0131] 1-12. ts
[0132] #EXTINF:8,
[0133] 1-14. ts
[0134] #EXTINF:8,
[0135] 1-16. ts
[0136] #EXTINF:9,
[0137] 1-18. ts
[0138] #EXTINF:6,
[0139] 1-20. ts
[0140] #EXTINF:8,
[0141] 1-22. ts
[0142] #EXTINF:9,
[0143] 1-24. ts
[0144] #EXTINF:3,
[0145] 1-26. ts
[0146] #EXT-X-ENDLIST
[0147] 客户端拿到上面的二级M3U8文件后,会继续请求里面的文件,这时就可进行播放 了。
[0148] 上面是点播的情况,直播的情况,M3U8文件里面会有属性告诉是直播,客户端会定 时来请求新的M3U8文件。
[0149] 步骤13,将TS流数据重新封装成为低码率的TS流数据并生成相应的低码率M3U8 文件。
[0150] 如上所述,M3U8文件是一个索引文件,根据M3U8文件可以获取该音视频文件对应 的TS碎片文件。TS是流的存储格式,其中,每个音视频文件都被分为若干个TS碎片文件。 每个TS碎片文件对应着该音视频文件的一小段内容。
[0151 ] 将TS流数据重新编码为低码率的h264和aac数据;将h264和aac数据重新封装 为低码率的TS流数据。根据php动态生成低码率M3U8文件。
[0152] TS :全称为MPEG2-TS。TS即〃Transport Stream〃的缩写。它是分包发送的,每一 个包长为188字节(还有192和204个字节的包)。包的结构为,包头为4个字节(第一个 字节为0x47),负载为184个字节。在TS流里可以填入很多类型的数据,如视频、音频、自 定义信息等。MPEG2-TS主要应用于实时传送的节目,比如实时广播的电视节目。MPEG2-TS 格式的特点就是要求从视频流的任一片段开始都是可以独立解码的。简单地说,将DVD上 的V0B文件的前面一截cut掉(或者是数据损坏数据)就会导致整个文件无法解码,而电 视节目是任何时候打开电视机都能解码(收看)的。
[0153] 一段TS流,必须包含PAT包、PMT包、多个音频包、多个视频包、多个PCR包、以及 其他信息包。解析TS流数据的流程:查找PID为0x0的包,解析PAT,PAT包中的program_ map_PID表示PMT的PID ;查找PMT,PMT包中的elementary_PID表示音视频包的PID,PMT 包中的PCR_PID表示PCR的PID,有的时候PCR的PID跟音频或者视频的PID相同,说明PCR 会融进音视频的包,注意解析,有的时候PCR是自己单独的包;CAT、NIT、SDT、EIT的PID分 别为:0x01、0xl0、0xll、0xl2。
[0154] Ts文件合并通常有如下方式,本实施例对此不做限定。
[0155] 1、DOS命令合并分割。
[0156] 第一步:首先,来整理我们的分割档,我们以TS格式为例:把分割档按照顺序重命 名为:1. ts、2. ts、3. ts.......N. ts(N只是代表一个数,没有特殊意义,有几个分割档就依 此类推~),需要整合的分割档,统一放到一个目录下。
[0157] 第二步:在此目录下,新建一个文本文档,就是后缀名为txt的文件。打开,输入: copy/b 1. ts+2. ts+3. ts.....+N. ts xxx. ts〇
[0158] copy和/b之间有一个空格,/b和1. ts之间有一个空格,N. ts和xxx. ts之间有 一个空格,剩下的都没有空格,[+]是加号,[xxx. ts]是合并后文件的文件名。所以,也可以 输入成要储存成的文件名。
[0159] 第三步:输入完毕后,储存文本,文件名随意,关闭。将后缀名txt,更改为bat,这 个就是Windows的批量处理文件了。双击运行,会看见分割档会在逐渐合并为完整档。
[0160] 优点:HD视频合并的软件很多,但真正无损的合并软件很少,为了避免此类事件 发生,利用DOS来合并分割档,只要资源是完整档分割的,合并后绝对无损耗,一个字节都 不会损失。
[0161] 2、打开 tsmuxergui,首先 add xxxx. diskl. ts,然后点 append 依次加入 xxxx. disk2. ts直到全部append所有TS完成!
[0162] 网络中流传的HDTV主要以两类文件的方式存在,一类是经过MPEG-2标准压 缩,以.tp和.ts为后缀的视频流文件,一类是经过WMV-HD (Windows Media Video High Definition)标准压缩过的.wmv文件,还有少数文件后缀为.avi或.mpg,其性质与.wmv 是完全一样的。HDTV文件都比较大,即使是经过重新编码过后的.wmv文件也非同小可。以 一部普通电影的时间长度来计算,.wmv文件将会有4G以上,而同样时间长度的.tp和.ts 文件能达到8G以上,有的甚至达到20多G。因此,除了通过文件后缀名,还可以通过文件 大小来判断是否为HDTV文件。如何在个人电脑上播放HDTV节目?对于.wmv文件,只要 系统安装了 Windows Media Player 9或更高版本,就可以正常播放,一些播放软件的最新 版本已经开始支持WMV-HD,如WINDVD6等,也可以直接使用这些软件播放HDTV。有些HDTV 文件在压缩过程中采用了其它标准的编码格式,就需要安装对应的解码器,遇到Windows Media Player 9不能正常播放时,可以再安装ffdshow,它带有各种最常用的解码器。播 放以.tp和.ts为后缀的视频流文件要稍微麻烦一点,因为文件中分别包含有AC3音频 信息和MPEG-2视频信息。好在现下有已经不少专门播放.tp和.ts文件的软件问世了, Moonlight-Elecard MPEG Player就是其中一款比较常见的支持HDTV播放的软件,目前 最新的版本为2. X。安装完后,也可以运行其它播放软件来调用Moonlight-Elecard MPEG Player的解码器进行播放。
[0163] 解析ts的过程就是通过找到PAT表,从PAT表中找出对应存在的节目的id,按照 这些id找到这些节目的PMT表,从中获到这些节目总的相对的媒体数据id,然后通过这些 id,再从ts文件中找到这些文件的es数据,来完成解码或者别的什么操作。
[0164] 本步骤中,把数据交给数据编码模块。该编码模块会调用X264编码器编成3种低 码率的h264和aac数据,并将这些数据放到链表中。TS封装模块会从链表中取出编码后的 h264和aac数据并封装成低码率TS,以10秒钟截取一个TS碎片文件存放到系统磁盘中。 用php动态生成M3U8文件。
[0165] 步骤14,根据用户需求返回所述低码率M3U8文件和相应低码率的TS流数据。
[0166] 通过Nginx发布所述低码率的TS流数据为HLS直播流。用户请求这三种直播流 (150kbps, 300kbps, 450kbps)时,首先nginx会收到用户请求,根据请求接口 php脚本会处 理用户请求,根据用户请求的不同参数给用户返回不同M3U8文件。
[0167] 本发明实施例2提供的一种HLS在线转码方法,其中,
[0168] 步骤21,M3U8下载模块根据配置文件会下载2. 5M码率的M3U8直播流,把下载的 M3U8直播流交给TS拼接模块拼成TS直播流用存入共享内存中。
[0169] 步骤22,TS解压缩模块会从共享内存中取出TS直播流数据进行解压缩,解出视频 数据和音频数据,把数据交给数据编码模块。该编码模块会调用X264编码器编成3种低码 率的h264和aac数据,并将这些数据放到链表中。
[0170] 步骤23, TS封装模块会从链表中取出编码后的h264和aac数据并封装成低码率 TS,以10秒钟截取一个TS碎片文件存放到系统磁盘中。
[0171] 步骤24,用php动态生成M3U8文件。
[0172] 步骤25,用户请求这三种直播流(150kbps, 300kbps, 450kbps)时,首先nginx会收 到用户请求,根据请求接口 php脚本会处理用户请求,根据用户请求的不同参数给用户返 回不同M3U8文件。
[0173] 如图2所示,为本发明实施例3提供的一种HLS在线转码系统结构示意图,其中,
[0174] 下载单元31,用于根据预先配置下载高码率HLS音视频流并获取相应的M3U8文 件;
[0175] 解码单元32,用于根据M3U8文件解码高码率HLS音视频流得到相应的TS流数据;
[0176] 封装单元33,用于将TS流数据重新封装成为低码率的TS流数据并生成相应的低 码率M3U8文件;
[0177] 发布单元34,用于根据用户需求返回低码率M3U8文件和相应低码率的TS流数据。
[0178] 特别的,上述系统还包括:
[0179] 拼接单元35,用于将下载的高码率HLS音视频流根据相应的M3U8文件获取相应的 TS文件并拼接成相应的TS流;
[0180] 解码单元32根据TS流解码得到相应的TS流数据。
[0181] 特别的,上述系统还包括:
[0182] 编码单元36,用于将TS流数据重新编码为低码率的h264和aac数据;
[0183] 封装单元33将h264和aac数据重新封装为低码率的TS流数据。
[0184] 特别的,上述系统还包括:
[0185] M3U8动态生成单元37,用于根据php动态生成低码率M3U8文件。
[0186] 综上所述,本发明实施例根据预先配置下载高码率HLS音视频流并获取相应的 M3U8文件;根据所述M3U8文件解码所述高码率HLS音视频流得到相应的TS流数据;将所 述TS流数据重新封装成为低码率的TS流数据并生成相应的低码率M3U8文件;根据用户需 求返回所述低码率M3U8文件和相应低码率的TS流数据。本发明实施例的方案,能够实现 将2. 5M高码率HLS直播转换输出3路低码率(150kbps,300kbps,450kbps)的HLS直播,极 大的提高了用户体验度。
[0187] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序 产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实 施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机 可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形 式。
[0188] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程 图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一 流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算 机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理 器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生 用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能 的装置。
[0189] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特 定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指 令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或 多个方框中指定的功能。
[0190] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计 算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或 其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图 一个方框或多个方框中指定的功能的步骤。
[0191] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精 神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围 之内,则本发明也意图包含这些改动和变型在内。
【主权项】
1. 一种HLS在线转码方法,其特征在于,包括: 根据预先配置下载高码率HLS音视频流并获取相应的M3U8文件; 根据所述M3U8文件解码所述高码率HLS音视频流得到相应的TS流数据; 将所述TS流数据重新封装成为低码率的TS流数据并生成相应的低码率M3U8文件; 根据用户需求返回所述低码率M3U8文件和相应低码率的TS流数据。2. 如权利要求1所述的方法,其特征在于,所述方法还包括: 将下载的高码率HLS音视频流根据相应的M3U8文件获取相应的TS文件并拼接成相应 的TS流; 根据所述TS流解码得到相应的TS流数据。3. 如权利要求1所述的方法,其特征在于,所述方法还包括: 将所述TS流数据根据X264编码器重新封装成为低码率的TS流数据。4. 如权利要求1或3所述的方法,其特征在于,所述方法还包括: 将所述TS流数据重新编码为低码率的h264和aac数据; 将所述h264和aac数据重新封装为低码率的TS流数据。5. 如权利要求1所述的方法,其特征在于,所述方法还包括: 根据php动态生成所述低码率M3U8文件。6. 如权利要求1所述的方法,其特征在于,所述方法还包括: 通过Nginx发布所述低码率的TS流数据为HLS直播流。7. -种HLS在线转码系统,其特征在于,包括: 下载单元,用于根据预先配置下载高码率HLS音视频流并获取相应的M3U8文件; 解码单元,用于根据所述M3U8文件解码所述高码率HLS音视频流得到相应的TS流数 据; 封装单元,用于将所述TS流数据重新封装成为低码率的TS流数据并生成相应的低码 率M3U8文件; 发布单元,用于根据用户需求返回所述低码率M3U8文件和相应低码率的TS流数据。8. 如权利要求7所述的系统,其特征在于,所述系统还包括: 拼接单元,用于将下载的高码率HLS音视频流根据相应的M3U8文件获取相应的TS文 件并拼接成相应的TS流; 所述解码单元根据所述TS流解码得到相应的TS流数据。9. 如权利要求7所述的系统,其特征在于,所述系统还包括: 编码单元,用于将所述TS流数据重新编码为低码率的h264和aac数据; 所述封装单元将所述h264和aac数据重新封装为低码率的TS流数据。10. 如权利要求7所述的系统,其特征在于,所述系统还包括: M3U8动态生成单元,用于根据php动态生成所述低码率M3U8文件。
【文档编号】H04N21/845GK105992016SQ201510060659
【公开日】2016年10月5日
【申请日】2015年2月5日
【发明人】张新亮
【申请人】天脉聚源(北京)科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1