`

http live streaming(m3u8 streaming)(mpeg2-ts)

    博客分类:
  • IOS
 
阅读更多

上篇介绍了m3u8文件,本篇介绍MPEG2-TS文件:

MPEG2-TS是一种封装格式,所有的video,audio以及辅助信息(PAT,PMT)都被封装成为188bytes的TS_packet.在TS中用PID来区分不同的stream.其中有一些特殊的PID,如PAT的pid固定是0x0000.

标准是:iso13818-1

优点是每个包都有固定大小,在网络传输中和文件切割时比较方便;

缺点是因为每个包都是188bytes,所以必然会有padding;从而浪费一定的空间,当sample比较小的时候浪费是比较严重的,此时能够通过将多个sample压缩进行打包的方式来实现。

在http live streaming中只需要实现部分标准。

PSI(program specific information)信息:

PAT(program_association_table):是由program_association_section构成。

每个PAS的结构如下图所示:


由上图可以看出PAS用来指定program_map_pid和network PID。对于m3u8 streaming 中network PID 并不需要实现。


PMT(program_map_table):用来指定每个节目中有几路es stream,其中每个stream的PID以及一些相关的描述信息。


PES_packet():用来打包es的格式。其中比较重要的信息有DTS、PTS信息。详细信息请查阅iso13818-1标准。

TS_packet(transport_packet):用来打包PES_packet和PSI信息。

在MPEG2-TS中PID是一个很重要的概念,PID是流的唯一标示符,相同的PID指定的是相同类型的内容。服务器和客户端端是通过PID来实现复用和解复用的。

客户端的解码过程:

1.找到TS_packet的开始位0x47。

3.找到PID为0x0000的PAT,将PAT进行解包,得到每路节目对应的PMT PID(在m3u8 streaming中只有一路节目)。

4.根据PAT解包得到的PMT PID得到PMT,同理将PMT进行解包得到ES pid和对应的类型。

5.根据PMT解包得到的ES PID,将该路流解包得到PES_packet,从而得到ES流和DTS,PTS。此时就能送到decoder去解码了。

服务器端的编码过程:

1.更具PMT PID来生成PAT,并打包成TS_packet来写入文件。

2.根据ES的PID和类型生成PMT,并打包成TS_packet来写入文件。

4.接收video/audio sample,并将一个或者多个sample打包成为PES_packet.

5.将打包好的PES_packet封装成TS_packet写入文件。

分享到:
评论

相关推荐

    M3U8下载器,用于根据M3U8地址下载文件

    M3U8是HLS(HTTP Live Streaming)协议的一部分,由Apple公司开发,主要用于流媒体视频和音频的分段传输。这种格式允许内容分发网络根据用户的网络条件动态调整流的质量,提供流畅的观看体验。 M3U8文件本身是一个...

    N_m3u8DL-CLI_v2.6.0_with_ffmpeg_and_SimpleG.zip

    m3u8是一种基于HTTP Live Streaming (HLS) 的播放列表文件,用于分段传输多媒体数据。它将长视频分割成多个小片段,每个片段通常为几秒到几十秒不等,以适应网络环境的变化,确保流畅的播放体验。m3u8文件包含了这些...

    M3U8 Downloader 基于 FFmpeg 的M3U8下载器

    ”M3U”和”M3U8″文件都是苹果公司使用的HTTP Live Streaming格式的基础,这种格式可以在iPhone和Macbook等设备播放。简而言之,M3U8就是一个播放列表。所以问题来了,如果你想下载一个播放列表里的所有视频,然后...

    m3u8DL-CLI-v2.9.7.zip

    m3u8是一种基于HTTP Live Streaming (HLS) 协议的多媒体播放列表格式,广泛应用于流媒体服务,如在线视频网站和直播平台。 该压缩包“m3u8DL-CLI-v2.9.7.zip”包含的主要内容是“N_m3u8DL-CLI_v2.9.7_with_ffmpeg_...

    N_m3u8DL-CLI 软件

    m3u8是一种基于HTTP Live Streaming (HLS) 的媒体播放列表格式,由Apple公司推出,主要用于分段式传输高质量的流媒体内容,如高清视频。它将大文件分割成多个小片段(通常为几秒),以便在网络条件变化时动态调整...

    m3u8downloader_M3U8Downloader_29视频网.m3u8_m3u8下载开发_m3u8download_4

    M3U8是一种基于文本的媒体播放列表格式,广泛应用于流媒体服务,特别是在 HLS(HTTP Live Streaming)协议中。标题中的"M3U8Downloader"是一个专门针对M3U8文件进行下载的工具,主要功能是对M3U8文件进行解析和分段...

    M3u8 Downloader(M3U8下载)下载

    M3U8是一种基于HTTP Live Streaming (HLS)协议的媒体播放列表格式,广泛应用于在线流媒体服务。它将视频分割成多个小段(通常为TS格式),通过M3U8索引文件指示这些片段的位置,从而实现流式传输。由于这种分段传输...

    使用ffmpeg合并m3u8格式视频.docx

    m3u8文件实际上是一种播放列表,它包含了多个ts视频片段的路径,这些片段可能是由HTTP Live Streaming (HLS)协议分发的。这种格式常用于在线流媒体服务,因为它可以适应不同的网络条件。 描述中提到的步骤包括: 1...

    m3u8资源下载工具m3u8DL-CLI

    在数字媒体领域,m3u8格式的资源广泛应用于在线视频流传输,它是一种基于HTTP Live Streaming (HLS)的播放列表文件。m3u8文件本身并不存储视频内容,而是包含一系列指向视频切片(或称为碎片)的URL,这些切片通常以...

    HLS(Http live streaming)

    HLS http live streaming 白皮书 draft-pantos-http-live-streaming

    直播数据文件 全国景区源.m3u8

    它最初由苹果公司开发,为HTTP Live Streaming(HLS)协议提供支持。M3U8文件采用UTF-8编码,包含了一系列URI链接,指向媒体文件或其他嵌套的M3U8文件。其结构简单清晰,常用于实现自适应码率、分片传输的视频播放。...

    m3u8-segmenter-master.zip

    它由Apple公司推出,主要用于HLS(HTTP Live Streaming)流媒体系统。m3u8文件本质上是一个文本文件,包含一系列URL,这些URL指向媒体内容的分片,即所谓的“segment”。 m3u8-segmenter工具则扮演了将原始视频或...

    国外电视台2024.m3u8

    它最初由苹果公司开发,为HTTP Live Streaming(HLS)协议提供支持。M3U8文件采用UTF-8编码,包含了一系列URI链接,指向媒体文件或其他嵌套的M3U8文件。其结构简单清晰,常用于实现自适应码率、分片传输的视频播放。...

    dplayer独立m3u8加速P2P解析.zip

    其次,M3U8是HLS(HTTP Live Streaming)协议下的播放列表文件格式,广泛用于流媒体传输。M3U8文件包含了一系列TS(Transport Stream)片段的URL,这些片段通常由编码器实时生成。DPlayer支持M3U8格式,意味着它可以...

    m3u8下载器,m3u8多任务下载不限制速,mp4合成,m3u8加密视频下载

    其中,m3u8格式作为一种基于HTTP Live Streaming (HLS)的播放列表文件,广泛应用于在线视频、直播等领域。然而,对于普通用户来说,直接下载m3u8链接并将其转换为可离线观看的本地文件,如MP4,通常需要借助专门的...

    在线m3u8 视频在线提取下载工具,支持转MP4格式,无需安装

    m3u8是一种基于HTTP Live Streaming (HLS) 的多媒体播放列表格式,广泛用于互联网流媒体传输。这种格式由Apple开发,主要优点在于能够适应不同的网络条件,提供流畅的视频体验。 1. **m3u8格式**:M3U8文件是m3u...

    m3u8批量下载工具 支持CBC和ECB解密

    m3u8文件是HLS(HTTP Live Streaming)协议下的媒体播放列表,广泛应用于在线视频服务,尤其是适应不同网络条件的自适应流媒体播放。这款工具的独特之处在于其支持CBC(Cipher Block Chaining)和ECB(Electronic ...

    m3u8-dl:一个CLI m3u8-downloader程序,用于解析.m3u8播放列表文件并下载mpeg2-ts视频文件,将其连接起来并使用FFMPEG将其转换为mp4

    m3u8-dl 一个CLI程序,用于下载m3u8播放列表中的视频,将其写入单个视频文件,然后使用ffmpeg将其转换为mp4。 在此处阅读有关m3u8的信息 依存关系 在激活virtualenv之后,使用pip install -r requirements.txt...

    go-m3u8:在Golang中解析并生成Apple HTTP Live Streaming(HLS)的m3u8播放列表(从gem https:github.comsethdeckardm3u8移植)

    go-m3u8可以轻松生成和解析Apple发行的HTTP Live Streaming(HLS)Internet草案中定义的m3u8播放列表。 该库完全实现了HLS Internet Draft版本20。 提供从任何File,io.Reader或字符串将m3u8播放列表解析为对象...

    Java使用FFmpeg实现mp4转m3u8

    `MP4`是一种包含视频、音频、字幕等多轨道的容器格式,而`M3U8`则是一个用于流媒体播放的 playlist 文件,常用于 HLS(HTTP Live Streaming)协议,适应于移动端和网络带宽变化大的场景。本篇文章将详细讲解如何使用...

Global site tag (gtag.js) - Google Analytics