rtmp流转Hls流 与 flv转mpegts

媒体基础知识(二) mpegts详解 文章目录MPEG-2标准组成系统、视频、音频标准介绍ISO/IEC 13818-1: 系统部分ISO/IEC 13818-2视频部分ISO/IEC 13818-3: 音频部分术语术语详解PES PacketProgram StreamTransport StreamPSI 节目专用信息PAT节目关联表PMT节目映射表 上篇介绍了媒体的基础知识,本文单独介绍MPEG-2 MPEG-2标准组成 IS... 阅读详情

rtmp协议是adobe出的一种流媒体格式协议。是目前较为流行的协议的一种。

HLS协议是苹果推出的一种流媒体协议,由于IOS系统不支持RTMP协议,如实现RTMP协议的流媒体需要自己实现RTMP的客户端,这使得移动手机端使用RTMP的流媒体增加了一些开发成本。


HLS协议的详情可以参考APPLE的网站,内容主要由M3U8和MPEGTS这两大文件组成,本文详解的是MPEGTS文件。


MPEG2-TS(Transport Stream“传输流”;又称 MTS、TS)是一种传输和存储包含音效、图像与通信协议各种数据的标准格式,用于数字电视广播系统,如 DVB、ATSC、IPTV 等等。

 

MPEG2-TS 定义于 MPEG-2 第一部份,系统(即原来之 ISO/IEC 标准 13818-1 或 ITU-T Rec. H.222.0)。

 

SMPLAYER、VLC多媒体播放器 等软件可以直接播放 MPEG-TS 文件。

 

MPEG2-TS传输流编码层允许一个或多个节目组合成单一流。来自每个基本流的数据同节目内允许该基本流同步显示的信息一起多路复用。

 

传输流由一个或多个节目组成。音频和视频基本流(ES)由存取单元(AU,一般常说的NALU)组成。

 

基本流数据(ES element stream ,  比如H264裸流)在PES 包中承载。PES 包由PES 包头及后随的包数据组成。PES 包插入到传输流包中。每个PES 包头的首字节定位于传输流包的第一个有效载荷位。

 

本文主要的参考为:ISO-13818-1,Adobe Flash Video File Format Specification  Version 10.1,ISO-14496-3,ISO-14486-15

 

本文所述内容与标准有一定的差异,这种差异并非指存在违背标准的内容,而是本文由于篇幅所限,对于某些约束,只取与符号标准的一项,而不是兼容标准所有的规范。

 

 

1.2结构

 

传输流类似OSI network 协议堆栈:

 

1.TS

2. PES

3.Elementarystream (ES) — audio or video (the below is for video only)

4.编码层..

 

 

1.3传输流数据包(transport stream packets)

TransportStream packets -> PES -> ES

 

TransportStream packets 是传输流(transport stream)内数据的最基本单位,包含了一个同步字节(sync byte)值为 0x47,它存在一个4bytes的固定包头,32bits 接着它的是可变包头区域。 Packets 有固定的188 bytes 的长度。


表1-1 Transport Stream packets结构

字段

Value

bits

 

sync_byte

0x47

8

bslbf

transport_error_indicator

如果这个流中包含了一个无法修复的错误,由解调器设置,以告诉多路解调器,该包存在一个无法纠正的错误

1

bslbf

payload_unit_start_indicator

1 表示是 PES 数据或 PSI数据的开始部分,否则为零.

1

bslbf

transport_priority

1 意思是在相同 PID 的数据包中含有更高的优先权.

1

bslbf

PID

PID 为13 比特字段,指示包有效载荷中存储的数据类型,也就是包的标识号。

13

uimsbf

transport_scrambling_control

此2 比特字段指示传输流包有效载荷的加扰方式。

2

bslbf

adaptation_field_control

此2 比特字段指示此传输流包头是否后随自适应字段和/或有效载荷

2

bslbf

continuity_counter

continuity_counter 为4 比特字段,随着具有相同PID 的每个传输流包而增加

4

uimsbf

 

 

 

 

 

这里最主要关系的是payload_unit_start_indicator,PID,adaptation_field_control,continuity_counter

 

payload_unit_start_indicator

这个位标志为1,指的是一个包的启示,因为ts包只有188个字节,对于一个PES包的话往往大于188字节,因此一个PES包往往要拆成多个TS包,为了识别收到的TS包属于另一个PES包,起始位表示新的一个PES包或者PSI包等到来了。

 

PID program id

节目标示符,一个13位的无符号整数。作用如下表描述。一般来说,参考FFMPEG,PMT表使用PID 4096,VIDEOSTREAM 采用256,AUDIOSTREAM采用257。

【多媒体文件格式】MP4、MPG、TS、3GP、3G2、3GPA MPEG2-PS主要应用于存储的具有固定时长的节目,如DVD电影,而MPEG-TS则主要应用于实时传送的节目,比如实时广播的电视节目。MPEG-1 Part 2 视频不容易获得,并且此扩展名(MPG 文件格式)通常指向在 MPEG-1 和 MPEG-2 中定义的 MPEG 程序,或在 MPEG-2 中定义的 MPEG 传输.其他扩展名,如 .m2ts 也存在指定准确的容器,在本例中为 MPEG-2 TS,但这 MPEG-1 媒体几乎没有相关性。是包含 MP3 音频的文件的最常见扩展名。 阅读详情

相关推荐

srswiki

srs wiki 小结srs wiki 小结 简介 in rtmp MPEG-TS RTSP FLV Push MPEG-TS over UDP Push RTSP to SRS Push HTTP FLV to SRS 任何文件和 out rtmp hls http-flv hds dvr edge mode 防盗链 http api reload 简介srs一个媒体server,主打simp

lemonbinary的博客 3512

mpegts.js:HTML5 MPEG2-TS播放器

mpegts.js 用TypeScript和JavaScript编写HTML5 MPEG2-TS播放器。 mpegts.js针对低延迟的实时播放进行了优化,例如DVB / ISDB电视或监视摄像机。 该项目基于 概述 mpegts.js的工作原理是将MPEG2-TS流转换为ISO BMFF(分段MP4)段,然后通过 API将mp4段馈送到HTML5 <video>元素中。 演示版 特征 通过H.264 + AAC编解码器在http(s)或WebSocket中传输的MPEG2-TS进行回放 最好的情况下,只有1秒的极低延迟 支持处理动态编解码器参数更改(例如,视频分辨率更改) 支持Chrome,FireFox,Safari,Edge(旧版或Chromium)或任何基于Chromium的浏览器 支持自动跟踪HTMLMediaElement内部缓冲区的延迟 低CPU开销和低内存使用率

RTMP、RTSP、SRT媒体协议实战:从原理到安卓/嵌入式推全解析

媒体协议是音视频实时传输的基石,其核心原理在于如何在网络之上高效、可靠地封装和传输连续的媒体数据。RTMP基于TCP,通过稳定的连接和块机制实现低延迟交互,成为直播推领域的事实标准,其技术价值在于广泛的生态兼容性。RTSP则扮演“网络遥控器”的角色,通过信令控制RTP传输音视频,专精于安防监控等专业领域。面对公网传输中的丢包和抖动挑战,SRT协议在UDP基础上引入ARQ自动重传和AES加密机制,其技术价值在于为远程制作、跨国传输等场景提供了高可靠、低延迟的解决方案。本文聚焦于这三大核心协议,深入剖析

weixin_34037173的博客 752

Windows搭建Nginx实现RTMP转为HLS

这里我将本地MP4文件推送到本机的RTMP端口下的live路径上,因为Nginx中我们为这个路径开启了HLS功能,所以正常情况下,这时HLS就已经准备好了。因为hls的路径我是配在http80服务下的,所以地址也是80端口http://127.0.0.1:80/my-hls/orange2.m3u8。这里定义了一个叫live的RTMP路径。同时设置其开启HLS功能,那么所有推送到这个地址的RTMP都会自动生成一条对应HLS。首先我们可以在live对应的存在ts文件的路径中看到生成的ts文件。

zhou_Tian的博客 4120

MPEG-TS 格式解析

一.背景介绍 二.TS介绍 三.TS解封装的原理 四.TS格式详解 1.TS包格式 2.PAT格式 3.PMT格式 4.PES格式 五.参考资料 一.背景介绍 MPEG-TS一种标准数据容器格式,传输存储音视频、节目系统信息协议数据,应用于数字广播系统,譬如DVB,ATSCIPTV。传输在MPEG-2第1部分系统中规定,正式称为ISO / IEC标准13818-1或IT...

仰望星空 2万+

Golang开源媒体服务器(RTMP/RTSP/HLS/FLV等协议)

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 一. lal 简介 lal是开源直播媒体网络传输项目,主要由三部分组成: lalserver:媒体发服务器。类似于nginx-rtmp-module等服务,但支持更多的协议,提供更丰富的功能。 demo:一些小应用,比如推、拉客户端,压测工具,分析工具,调度示例程序

qq_45562973的博客 1万+

Video(flv,mpegts)视频解决方案

经过以上的分析,现阶段最适合最直播业务的为flv,而它的缺点是前端 video 标签不能直接播放,需要经过处理才行。不过没关系,我们有flv.js!底层基于 TCP,在浏览器端依赖 Flash,但是从2020底年开始,谷歌已经带头不支持flash插件了。flv.js是一个较成熟的前端处理flv格式的插件库,是B站视频的开源插件。

qq_52648305的博客 8181

SRS Transmuxing技术揭秘:如何实现不同协议间的无缝

SRS(Simple Realtime Server)作为一款高效的实时媒体服务器,其核心优势之一就是强大的Transmuxing技术。这项技术能够在不重新编码的情况下实现不同媒体协议间的无缝换,为直播系统提供了灵活高效的解决方案。本文将深入解析SRS的Transmuxing技术原理、应用场景及实现方式,帮助读者全面了解这一关键功能。 ## 什么是Transmuxing?Transcodi

gitblog_00283的博客 833

Golang 媒体音视频网络传输开源项目-LAL

一. lal 简介 lal是开源直播媒体网络传输项目,主要由三部分组成: lalserver:媒体发服务器。类似于nginx-rtmp-module等服务,但支持更多的协议,提供更丰富的功能。 demo:一些小应用,比如推、拉客户端,压测工具,分析工具,调度示例程序等。类似于ffmpeg、ffprobe等应用。 pkg:媒体协议库。类似于ffmpeg的libavformat等库。 lal github地址: https://github.com/q191201771/lal 以下是lal

q191201771的专栏 4402

go srs 媒体服务器_开源媒体服务器SRS学习笔记(2) - rtmp / http-flv / hls 协议配置 及跨域问题...

修改该文件:listen 1935;max_connections 200;srs_log_tank file;srs_log_file ./objs/srs.log;http_api {enabled on;listen 1985;}http_server {enabled on;l...

weixin_35565522的博客 290

LAL 实战案例:搭建企业级直播平台的完整解决方案

LAL(GitHub 加速计划 / la / lal)是一个基于 Golang 的音视频直播库/客户端/服务器,支持 RTMP、RTSP(RTP/RTCP)、HLS、HTTP[S]/WebSocket-FLV/TS、GB28181 等多种协议,以及 H264/H265/AAC/G711 等音视频编码,提供中继、集群、录制、HTTP 通知/API/UI 等功能,是构建企业级直播平台的理想选择。 #

gitblog_00281的博客 606

SRS Config 二 Stream Caster

Stream Converter侦听特殊的TCP/UDP端口,接受客户端连接和媒体,并RTMP,推送给SRS。复制Note: 有些可能不止一个,甚至有不同的传输通道。1.1 Build​SRS默认开启Stream Converter的支持,不需要特别的编译参数。但某些协议可能需要特别的编译参数,请参考下面具体协议的使用介绍。​MPEG-TS over UDP: MPEG-TS裸,基于UDP协议。FLV by HTTP POST: FLV,基于HTTP协议。

TyearLin的专栏 697

mpegts.js实战:5分钟搞定浏览器直播播放(含常见问题排查)

本文详细介绍了如何使用mpegts.js库在浏览器中快速实现低延迟直播播放。通过实战代码演示了基础集成、核心配置调优(如liveBufferLatencyChasing延迟控制),并针对NETWORK_TIMEOUT、MEDIA_FORMAT_UNSUPPORTED等常见问题提供了排查方案生产环境建议,帮助开发者构建稳定畅的Web直播应用。

weixin_27960253的博客 392

LAL v0.35.4发布,OBS支持RTMP H265推,我跟了

Go语言媒体开源项目今天发布了v0.35.4版本。LAL 项目地址:https://github.com/q191201771/lal。

q191201771的专栏 838

HLS点播--FFmpeg接收udp视频

看到有网友问到,FFmpeg接收udp视频实现HLS直播的方法,我这里由于没有UDP的直播源就用VLC将一个MP4文件生成UDP视频来代替直播。 1、确认Nginx安装配置成功支持HLS,具体过程可参考我以前博客。 2、使用VLC生成UDP视频 3、FFmpeg接收udp流转换成RTMP视频推送到Nginx上 [plain] view pl

sunxiaopengsun的专栏 2661

视频处理-在线播放

常见的视频格式有WEBM、AVI、MPEG,但是对于有些需要实时监控的场景项目,我们可能需要用到rtsp协议的视频,例如大华、海康威视的项目,以及可能遇到的rtmp直播实时视频。HTML中的video标签能够允许我们在浏览器中播放视频,对于视频的格式也是有限制的,仅支持OGG、MPEG4、WebM,不同的浏览器支持程度和兼容性也不一样。

weixin_44022171的博客 834
上一篇: 如何在右键中添加“在终端中打开”或open in terminal
sara4321
博客等级 码龄18年 15粉丝 9原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值