SMS流媒体服务器-MPEG-PS流的深度解析

server/2024/11/12 23:39:25/

1.简介

        ps流的解析,只要按照标准文档对照16进制的流数据,基本都能看的明白。但是实际项目中会碰到各种各样的问题。本文将对如何高效的解析出音视频数据发表一下个人的看法。

        介绍一下本人的开源流媒体,点个star,有兴趣一起开发的朋友也可以联系本人:SimpleMediaServer(流媒体): 旨在开发一个可商用的,功能丰富、高性能、高可扩展的流媒体服务。支持RTSP、RTMP、WEBRTC、GB28181、HTTP-FLV、HLS、JT1078等协议。各个协议可以单独剥离出来,相互独立;也可以互相转换协议。有兴趣一起开发开源项目的朋友可以联系本人(qq 1084855601),包括且不限于音视频后端、信令开发、控制台,前端等。icon-default.png?t=N7T8https://gitee.com/inyeme/simple-media-server

2.获取音视频轨道

        大部分设备发送的ps流,在ps map头里会有音视频的编码信息,这时,直接读取ps map头里的编码信息,就可以初始化音视频track了,等待获取到视频的sps,pps等信息,音视频track也就完全初始化好了。

        但是有一部分的设备,音频的ps map和视频的ps map是两个独立的包,而且两个包之间间隔好几秒,这时候就没法通过某一个ps map包来初始化音视频的track,而是需要集齐两个ps map才行。然而,当一个设备的ps流里只有视频流时,这种情况是没法通过解析视频的ps map去判断,该设备后面会不会发ps map,如果想要确定,那就得等待。然而等待多久,就成了一个问题,如果后续没有音频的ps map,等再久也没用,但是等待的时间短了,可能会丢失掉音频的ps map。

        这时候,就需要根据其他的信息来进行判断了。在ps流里,一般情况下,视频包的startcode是E0,音频包的是C0,我们可以根据收到的包情况判断出,该ps流里是否有音频,尽管这时候不知道音频编码格式。如果有音频,那么就等待音频的ps map,如果没有音频包,那收到视频的ps map之后,就可以认为该流已经初始化好了。

        除了这种比较坑的设备,还有一种也很恶心,那就是ps map里解析出设备的音频格式是g711a,但实际上设备发过来的确是aac。这种情况,需要在收到音频数据时,再去判断一下该流是不是aac音频流,如果是的,更新一下音频编码格式。视频编码也会碰到这种对不上的情况,但是视频的判断比较麻烦,不如直接去修改设备配置了


http://www.ppmy.cn/server/102263.html

相关文章

深入探索Golang的hash包:哈希算法的高效实现

标题:深入探索Golang的hash包:哈希算法的高效实现 引言 Go语言,以其简洁的语法和高效的并发处理能力而广受开发者喜爱。在Go语言的标凈库中,hash包提供了一套强大的哈希算法实现,包括MD5、SHA1、SHA256等。本文将详细…

Unity | 游戏开发中的优化思维

目录 ​​​​​​一、优化三板斧: 第1步:定标准 第2步:重数据 第3步:严测试 二、流程和性能的优化 1.定标准: 2.重数据: 三、交互和表现的优化 1.卡顿和延迟 2.手感硬 四、沟通和学习 ​​​​…

DrissionPage自动化获取城市数据内容

一、获取页面内容 二、最终结果 上海市 约收录140个指标 查看98075次 人均GDP 153299元 公交车 17899辆 户籍人口 1469.3万人 三、代码 from DrissionPage._pages.chromium_page import ChromiumPage import time page ChromiumPage() page.get(https://www.swguancha.com/…

Taro+Vue 创建微信小程序

TaroVue 创建微信小程序 一、全局安装 tarojs/cli二、项目初始化三、现在去启动项目吧 一、全局安装 tarojs/cli npm install -g tarojs/cli //安装 npm info tarojs/cli //查看安装信息 如果正常显示版本说明成功了,就直接跳到第二步吧官网说:…

分布式知识总结(基本概念)

文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 基本概念 吞吐量 指系统在单位时间能够处理多少个请求 QPS 每秒…

小区社区超市商城停车场管理系统-计算机毕设Java|springboot实战项目

🍊作者:计算机毕设匠心工作室 🍊简介:毕业后就一直专业从事计算机软件程序开发,至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长:按照需求定制化开发项目…

09结构型设计模式——组合模式

一、组合模式的简介 组合模式(Composite Pattern)是一种结构型设计模式,主要用于处理树形结构中的对象组合问题。它允许你将对象组合成树形结构,以表示部分-整体层次结构。组合模式使得客户端能够统一地对待单个对象和对象组合&a…

兼容并蓄,高效集成:EasyCVR视频综合接入能力助力多元化项目需求

随着视频技术的不断进步,视频监控、视频直播、执法记录仪、语音可视对讲、无人机等视频资源的应用场景日益丰富。这些视频资源不仅在数量上快速增长,而且在质量、格式、编码标准等方面也呈现出多样化的特点。因此,为了有效整合这些资源&#…