1. SIP心跳

    SIP协议分为普通心跳和会话心跳。 普通心跳由于SIP本身没有定义心跳,因而在实践中一般采用OPTIONS消息作为心跳,OPTIONS原来是用来作为获取对方能力的消息,正好也可以检测对方当前服务状态,比较合适。 正常情况下,UAS收到OPTIONS心跳,什么也不用做,直接回复200即可。 但是这种心跳的问题在于,如果服务异常重启,那么之前的会话则无法检测,因此规范也定义了会话级心跳。 会话心跳SI …

    技术 继续阅读

  2. RTP打包带B帧的H264

    正常情况下,RTP传输的H264是BP规格的,也就是只有I/P帧的视频内容。是否可以传输高规格视频呢,答案是肯定的。 H264视频规格分析H.264有四种画质级别,分别是BP、EP、MP、HP: Baseline Profile 基本画质。支持I/P帧,只支持无交错和CAVLC。 Extended profile 进阶画质。支持I/P/B/SP/SI帧,只支持无交错和CAVLC。 Main pr …

    技术 继续阅读

  3. 配置GITHUB使用SSH操作

    Github已经禁用了使用账号密码进行代码提交等操作的鉴权了,因此我们只能使用其他方式,比如SSH方式进行提交。 生成SSH-KEY按照官方指引,在桌面右键通过点击 Git Bash Here 或其他方式打开Bash,在内部执行。 $ ssh-keygen -t ed25519 -C 你的邮箱Generating public/private ed25519 key pair.Enter file …

    技术 继续阅读

  4. FLV中AAC格式

    简单的记录一下,在合成FLV文件时候,按照规范必须是特定采样率的AAC才行,但实际上并没有这个要求,只需要携带AAC的 Audio Specific Config 就可以了。 AAC音频格式按照FLV的规范要求,AAC可设置的采样率如下。 0 = 5.5-kHz1 = 11-kHz2 = 22-kHz3 = 44-kHz 实际上平时时候的采样率很多,比如16K、32K等等,在 Audio Spec …

    技术 继续阅读

  5. SIP中的被叫

    在SIP中被叫到底应该是哪个字段,其实之前一直没有使用到,但是偶尔有这方面的需求,需要查询记录下。 首先我们知道在SIP中的被叫其实有2个地方 第一个就是请求行,类似 INVITE 1001@172.27.16.4 SIP/2.0 中的URL中的 username 第二个是 To 行,类似 To: <sip:1001@172.27.16.4> 中的URL中的 username …

    技术 继续阅读

  6. 开发从RTP抓包中抽取H264视频的工具

    需求场景经常使用抓包工具分析RTP视频的人来讲,在抓包工具很容易分析包信息,但是并不能像PCMA音频一样可以直接预览,因此视频内容正确与否很难判断,因此需要开发工具来从抓包内提取视频出来。 总的来说,归纳下需要实现的关键点 为了简单期间,需要提前讲视频流单独导出一个单独的抓包文件(用端口等规则过滤) 支持正常打包,和 Fu-A 以及 STAP-A 这两种最常见的分包场景 能够实现对由于各种原因导 …

    技术 继续阅读

  7. 视频RTP乱序问题

    问题分析最近在一个新环境下保持RTP的H264视频数据花屏,按照以往经验,最大可能性是丢包了,遂抓包分析,发现包个数足够,并没有反馈任何包的丢失,这就有意思了。 不过在看抓包过程中,不经意间发现了下面的现象 seq 51 的包跑到 seq 50 的前面了,怪不得解包的视频不正确。顺着这个线索继续看发现 乱序现象一直存在,间隔时间不长就出现一次 乱序的包是一个视频帧,即其时间戳是相同的 解决方 …

    技术 继续阅读

  8. 从H264中SPS计算宽高

    最近在处理H264流的时候发现计算的宽高并不正确。 基本计算方法大家都知道SPS解析之后,宽高就可以通过下面的计算公式计算出来: 宽 (pic_width_in_mbs_minus1 + 1) * 16 高 (pic_height_in_map_units_minus1 + 1) * 16 然而仔细思考一下就发现,这种方式计算的宽高都是16的倍数,但好像和平时的认知不符啊。 其实针对不是16整 …

    技术 继续阅读

  9. CentOS6支持到期后配置备份更新源

    CentOS 6 的支持在上个月到期了,各个更新源都下线了,线上一堆的服务器又不能升级,偶尔安装个软件可怎么办,其实官方还保留了一个备份的源用来更新,虽然不升级了,但至少安装软件没问题。 配置备份虽然说备份已经没啥用了,但是作为良好的操作习惯,还是建议做一下。 备份目录 /etc/yum.repo.d/ ,将里面官方的 repo 文件都备份,备份之后删除目录内容,如果里面有其他未下线的仓库配置,暂 …

    技术 继续阅读

  10. BOOST不支持JSON输出数字值

    前文刚讲述过boost的porperty_tree在JSON上的一些问题,最近使用又发现一些问题,可能大家都可能发现了,就是用该库来生成JSON的时候,不支持数字等非字符串类型的值。 …

    技术 继续阅读