H264 NALU 使用PS封装 RTP发送

2023-11-01

最近由于项目平台需求,要将H264 NALU封装为PS再用RTP发送,PS封装按照ISO DEC-13818-1标准。一个PS包包含PS Header, PES Header, PS system header, PS system map等。

针对H264做如下PS封装:

1、每个IDR NALU前一般都会包含SPS、PPS等NALU,因此将SPS、PPS、IDR 的NALU封装为一个PS包,包括ps头,然后加上PS system header,PS system map,PES header+h264 raw data。所以一个IDR NALU PS包由外到内顺序是:PS header | PS system header | PS system Map | PES header |  h264 raw data。

2、对于其它非关键帧的PS包,就简单多了,直接加上PS头和PES头就可以了。顺序为:PS header | PES header | h264 raw data。

还有就是用rtp协议发送时,如果一个PS包大于MTU时,会有分包问题。只需要简单的分包发送就可以了,但是同一个PS包的时间戳是相同的,需要注意。

 

以上是对只有视频video的情况,如果要把音频Audio也打包进PS封装,也可以。当有音频数据时,将数据加上PES header 放到视频PES后就可以了。顺序如下:

PS包=PS头|PES(video)|PES(audio),再用RTP封装发送就可以了。

 

以上是H264 PS封装的大致流程。PS一些头的定义,在我的下载中,有需要的可以参考。

或者,加QQ群(219128816)一起探讨流媒体方面的开发。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

H264 NALU 使用PS封装 RTP发送 的相关文章

  • Android Mediaplayer:下载媒体文件的 setDataSource 问题

    我有一个可以录制和播放音频文件的应用程序 一些音频文件是使用 httpclient 使用简单的标准 http 下载来下载的 很长一段时间以来 它就像一种魅力 现在我突然无法播放我下载的文件 该堆栈失败 我将文件存储在 SDCard 上 并且
  • 在 C++ 中处理音频缓冲区时,如何执行从 float -> double -> float 的转换

    我目前正在开发一个应用程序 其中音频样本帧在以下回调中进行处理 void Eav07AudioProcessor processBlock AudioSampleBuffer buffer for int channel 0 channel
  • 禁用警告:GCC 中通过头文件的“gets”函数很危险?

    我正在使用该功能gets 在我的 C 代码中 我的代码工作正常 但我收到一条警告消息 text 0xe6 warning the gets function is dangerous and should not be used 我希望不要
  • 需要在状态改变时关闭MediaRecorder播放的声音

    我已尝试在下面的链接中找到的更改 但没有效果 如何在状态改变时关闭 MediaRecorder 播放的声音 https stackoverflow com questions 6804205 how to shut off the soun
  • 捕获设备活动时未触发 AVAudioSessionInterruptionNotification

    我遇到了问题 AVAudioSessionInterruptNotification 在 iOS 7 0 4 上 我在 NSNotificationCenter 上注册 然后激活 AVAudioSession 一切正常 但如果激活了摄像头
  • 录制视频和音频并上传到服务器

    我想为网站添加视频录制功能 我一直在搜索并尝试所有可能的可用解决方案 但还没有任何工作正常 我已经尝试过以下解决方案 WebRTC 我知道使用 WebRTC 我们可以从网络摄像头和麦克风获取流 我发现了很多关于相同内容的文章 但没有一篇解释
  • 为什么存在系统调用

    我一直在阅读有关系统调用及其在 Linux 中如何工作的内容 我还有更多的阅读要做 但我读过的一件事都没有回答 那就是 为什么我们需要系统调用 我知道系统调用是用户空间程序要求内核执行某些操作的请求 但我的问题基本上是 为什么用户空间程序本
  • PHP - 函数内的 header("Location:") 重定向而不调用函数

    我正在使用一个名为的函数headerLocation 以便正确重定向 这是该函数的相关部分 我用它来重定向 然后显示适当的消息 个人偏好 function headerLocation location message SESSION ou
  • C# 从mp4文件中提取mp3文件

    有没有简单的方法从 mp4 文件中提取 mp3 文件 我已经尝试过更改文件扩展名 但这不允许我编辑 mp3 描述 谢谢你 Use Xabe FFmpeg https xabe net product xabe ffmpeg 它是免费的 非商
  • 如何用SKAction循环播放音乐?

    我想用 SKAction 循环背景音乐 但当我切换到另一个场景时 音乐在一行后停止 有没有办法开始循环并在不同的场景中继续播放 现在代码放置在 MyScene 的 init 方法中 这是正确的位置吗 也许 didFinishLaunchin
  • Web 浏览器中的高品质音频录制

    一行版本 什么开源软件 WAMI Recorder 网络浏览器 通过 getUserMedia 将为我提供最佳质量的录音 高质量定义为 44 1 或 48 采样率 和 16 位样本大小 更多信息 目前我的解决方案是 WAMI Recorde
  • AJAX 请求返回 200 OK 但失败,尽管返回数据是 JSON

    Edit 就我而言 它没有返回正确信息的原因是我试图使用 JSONP 连接到 CORS 数据设置 而服务器没有为我的特定计算机访问设置它 我需要与某人交谈并调整服务器配置文件的权限 这就是真正发生的事情 我无法弄清楚 因为我认为 CORS
  • C++ 模板和头文件[重复]

    这个问题在这里已经有答案了 因此 我听说 C 模板不应分为头文件 h 和源文件 cpp 例如 这样的模板 template
  • 如何在Android中设置音频均衡器

    我正在制作一个媒体播放器 其中需要使用 搜索栏 将均衡器效果设置为 低音 可怕 摇滚 流行 中 我得到了一个链接 其中使用了一些 NDK 库来执行此操作 是否有任何 Java 库可以执行此操作 请解释执行此操作的逻辑是什么 Override
  • 如何在声音输入时触发振动?

    我正在尝试创建一个 Android 应用程序 在其中过滤蜂鸣声的一个特定频率并使手机振动 我正在从移动设备的 MIC 获取输入并使用 MediaRecorder 类 通过使用该类 我可以录制 保存和播放输入 现在我需要我的手机在发出蜂鸣声
  • 使用 UIImage 和 caf 创建视频文件的问题

    我已经阅读了在互联网上可以找到的所有关于此功能的帖子 并且我在创建视频文件方面取得了一些成功 但我还剩下 3 个问题 而且似乎没有人提到过这一点 我有 3 个问题 视频在某些播放器上无法正常播放 quicktime window 视频只播放
  • C# 音频库 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • AudioTrack、SoundPool 或 MediaPlayer,我应该使用哪个?

    如果我需要能够 播放多个音频文件 具有不同的持续时间 例如 5 到 30 秒 独立设置右 左声道的音量 应用声音效果 如混响 失真 那么 我应该使用哪个 API 另外 我在 AudioTrack API 上找不到太多文档 有谁知道在哪里可以
  • 如何在 AS3 中将声音放大指定的分贝数?

    几天前 这是我的问题 我找到了答案 也许这会帮助别人 A 问 题的第一部分 可以使用Flash放大声音吗 SoundTransform 的 AS3 文档这样描述了音量属性 音量 范围从 0 静音 到 1 最大音量 从表面上看 这意味着您只能
  • 在 VB2010 Windows 窗体开始时播放 .wav/.mp3 文件?

    制作 VB2010 已经大约一年了 最近开始突破我可以将哪种媒体合并到我的表单中的界限 但我无法播放 wav 或 mp3 文件 我尝试按照微软和其他编码网站上的教程进行操作 但没有成功 任何帮助 将不胜感激 要播放波形文件 您可以简单地使用

随机推荐

  • 常见算法题(包括华为机试题)

    一 维护O 1 时间查找最大元素的栈 问题描述 一个栈stack 具有push和pop操作 其时间复杂度皆为O 1 设计算法max操作 求栈中的最大值 该操作的时间复杂度也要求为O 1 可以修改栈的存储方式 push pop的操作 但是要保
  • vue + element + CDN 的方式使用

    CDN方式开发vue项目步骤 1 cdn 链接相关css element ui css common css js jq vue js element ui js common js 等 2 每个页面嵌入 下列相关内容 div 3 1415
  • DOM驱动和数据驱动的区别

    引言 在前端开发中 DOM驱动和数据驱动是两种常见的开发模式 它们代表了不同的思维方式和开发方式 本文将深入探讨DOM驱动和数据驱动的区别 并通过代码详解它们在前端开发中的应用 1 DOM驱动 DOM驱动是传统的前端开发方式 它的核心思想是
  • jssip连freeswitch加webRtc相关控制

    highlight a11y light theme juejin 摘要 最近在做一个freeSwitch项目 前端需要通过sip协议完成音视频通话 把一些关键的核心api记录一下 因为网上找的一部分资料不一定准确 这个是实际操作过得具有一
  • DC系列漏洞靶场-渗透测试学习复现(DC-8)

    DC 8是一个易受攻击的实验环境 最终目的是让攻击者获得root权限 并读取flag 本篇文档中用到了shell反弹和exim提权 1 环境搭建 下载靶场文件 使用Vbox或者VM打开即可 攻击机使用kali 2020 2 主机发现 使用K
  • Qt打包Debug版本和Release版本(包含到其他电脑打不开,缺库问题等)含msvcp140d.dll,concrt140d.dll,vcruntime140d.dll等发布所需库文件

    首先Debug版本和Release区别 Release是发行版本 比Debug版本有一些优化 文件比Debug文件小 Debug是调试版本 Debug和Release调用两个不同的底层库 Debug是调试版本 包括的程序信息更多 只有Deb
  • C++string字符串查找和替换 string字符串查找和替换

    C string字符串查找和替换 string字符串查找和替换 功能描述 查找 查找指定字符串是否存在 替换 在指定的位置替换字符串 int find const string str int pos 0 const 查找str第一次出现位
  • 操作系统系列(三)——编译和链接

    往期地址 操作系统系列一 操作系统概述 操作系统系列二 进程 本期主题 编译和链接 文章目录 1 被隐藏了的过程 1 1 预编译 1 2 编译 1 3 汇编 1 4 链接 1 模块拼接 静态链接 2 空间地址与分配 3 符号解析和重定位 核
  • Tempter of the Bone【DFS+奇偶剪枝】scanf会WA!!!

    题目链接HDU1010 多好的一道题 交scanf会WA cin一发过 我WA了30 次 惊是这样的BUG 我就说我推的公式怎会错呢 如果有字体缩小的方式 我要把上面那行缩小些 先看大家WA 可真是一道有趣的题目 首先 有这样的图推出奇偶剪
  • spark 基本概念解析

    spark 基本概念解析 1 Application 用户在 spark 上构建的程序 包含了 driver 程序以及在集群上运行的程序代码 物理机器上涉及了 driver master worker 三个节点 2 Driver Progr
  • 4.22/23实习总结:iptables

    文章目录 iptables 是Linux上常用的防火墙管理工具 是netfilter项目的一部分 实现包过滤 NAT功能 1 iptables的四表五链 2 iptables语法 iptables 选项 参数 3 iptables的策略 允
  • ubuntu apt-get 时遇到waiting for headers ——解决方法

    不知为何 当用到apt get 时总是waiting for headers 上网搜寻了解决方法 在这里记录一下 方便自己 方便别人 找到 var cache apt archives partial 目录 进去之后删除里面的东东即可 然后
  • 项目 迁移到新的服务器上,项目迁移到云服务器

    项目迁移到云服务器 内容精选 换一换 源端服务器迁移至华为云后 最终将迁移到弹性云服务器上 因此在迁移前 您需要在华为云中创建一个或多个弹性云服务器 进入 弹性云服务器 页面 关于参数的详细信息 请参见购买弹性云服务器 Windows系统的
  • 多态的基本概念

    多态 多态是指一种事物表现得多种形态 多态分为静态多态和动态多态 多态的特点 1 当父类类型的引用指向子类类型的对象时 父类类型的引用可以直接调用父类独有的方法 Fu fu new Zi int f fu fushow System out
  • 教你做一个属于自己的平衡小车,用STM32F103单片机实现(硬件篇)

    平衡小车软件篇 平衡小车代码篇 目录 一 电机 二 电机驱动 三 陀螺仪 四 OLED显示屏 五 STM单片机 六 其它 七 效果展示 一 电机 如果要做平衡小车不仅需要电机输出PWM来控制小车的行走 还应该适用带编码器的电机 因为要得到小
  • MFC编程实验(二):GDI绘图

    一 实验要求 以窗口中心点为原点 绘制y x2的函数曲线 并在曲线旁边用文字描述 绘制一个红色的圆 并绘制该圆的外切正方形 该正方形填充颜色为蓝色 边线颜色为绿色 二 实验过程 一 绘制y x2的函数曲线 1 利用MFC新建一个基于对单文档
  • unity中Input.GetAxis()用法

    using System Collections using System Collections Generic using UnityEngine public class TransformPointTest MonoBehaviou
  • ElementPlus 修改主题色和暗黑模式切换

    本文讲述根本ElementPlus官方教程配置项目的自定义主题色的两种方法和暗黑模式切换 一 主题配置 方案1 动态设置setProperty 这个方案比较简单 适用于由用户根据颜色面板自行设定各种颜色主题 1 首先定义一个全局的方法 ex
  • 与karma、angular的第一次亲密接触

    首先要了解什么是karma karma干嘛用的 它的好朋友jasmine又是啥 这些文章可以帮助你 karma干嘛的 angular与karma1 angular与karma2 看了以上几篇文章之后 我们基本上就可以启动我们最简单的一个ka
  • H264 NALU 使用PS封装 RTP发送

    最近由于项目平台需求 要将H264 NALU封装为PS再用RTP发送 PS封装按照ISO DEC 13818 1标准 一个PS包包含PS Header PES Header PS system header PS system map等 针