发布了一门RTP for H264/265的课程

发布了一门讲解RTP协议课程,感兴趣的同学可以看看 详细讲解了RTP协议,通过wireshark如何分析RTP码流的问题 讲解通过wireshark分析H264码流 讲解H264/265的FU-A 的封包模式 通过代码讲解了如果对FU-A模式的封包进行组帧 通过实现一个pcap 码流...

2018-10-25 14:49:08

阅读数 227

评论数 0

彻底弄懂I420格式

YUV的概念 YUV 和我们熟知的 RGB 类似,是一种颜色编码格式。它主要用于电视系统和模拟视频邻域(如 Camera 系统)。YUV 包含三个分量,其中 Y 表示明亮度(Luminance 或 Luma),也就是灰度值。而 U 和 V 则表示色度(Chrominance 或 Chroma...

2019-08-18 18:12:56

阅读数 3

评论数 0

你了解linxu下的线程id吗?

背景 最近在实现一个日志库时,需要记录线程id,我采用C++ 11中的std::thread api获取,如下例子代码: #include <thread> #include <iostream> int main() { std:...

2019-08-13 11:10:34

阅读数 3

评论数 0

掌握几种linux工具让程序更稳定

总结几种linux下观察程序使用资源情况的工具,包括:CPU,内存,fd有无泄漏,IO有无异常(比如日志异常输出),网络IO有无异常。通过这几种工具监控程序运行时资源有无异常,让程序更加稳定。 CPU使用率 最常用的命令是top,它可以显示整个系统中所有进程的CPU使用情况并且可以进行...

2019-07-08 11:49:14

阅读数 37

评论数 0

python实现进程管理类

以下代码实现了一个进程管理类,功能包括进程的启动及监控(类似看门狗功能,在进程崩溃时会再将它拉起来) #!/usr/bin/env python # -*- coding: utf-8 -*- import shlex import threading import subprocess impo...

2019-06-17 11:23:46

阅读数 33

评论数 0

一种用于voip客户端多窗口视频渲染的实现思路

本文描述的只是客户端界面多窗口与opengl渲染环境关联的一种思路,并非描述opengl如何渲染视频图像。其中黄亮色背景标识的就是详细的思路描述 背景 最近有一个项目,客户端运行环境是麒麟x86系统,客户端点播监控图像,客户端的界面是用QT做的,图像显示时是分屏模式,最大分屏数为9分屏(包括4...

2019-05-21 18:15:10

阅读数 30

评论数 0

asio中的buffer

异步操作 基本特征 异步操作的特点就是,操作不会被阻塞,马上返回,操作结果会通过回调函数告知。在asio中的异步IO也是如此,我们来看一个asio中udp socket的异步sendto接口,如下代码 dpSocket.async_send_to(buffers, boost:...

2019-05-12 18:31:57

阅读数 69

评论数 0

io_service对象的线程模型

io_service对象的线程模型体现在对io_service对象的run方法调用形式,不同的调用形式,会影响io_service post和dispatch方法对任务的分发方式。 一个io_service对象,一个线程调用该对象的run方法 #include <...

2019-03-15 00:23:20

阅读数 150

评论数 0

boost asio的基本知识点

socket编程的基本步骤 socket编程的基本步骤罗列如下,只是列出一个基本流程,不涉及到错误处理,io操作的方式。万变不离其宗,asio中的最基本步骤也是如此,它对基本的socket api进行了封装。 UDP 服务端流程 创建socket bind ip地址和端口 io操作...

2019-03-08 09:46:49

阅读数 36

评论数 0

cmake 资料整理

记录了一些cmake的资料,以下资料都是链接,直接点击即可。 cmake入门 cmake中预定义变量文档 cmake中 configure_file函数的用法 通过cmake判断g++编译器是否支持C ++11 如何使cmake生成debug和release的编译脚本 如何方便的清理cmake命...

2019-01-04 11:06:14

阅读数 151

评论数 0

海康28181摄像头接入的注意点

对一个海康摄像头以28181协议接入(海康摄像头设备级的接入,非系统级别接入),分为两步: 通过sip invite将海康的ps流拉出来,由于是设备级的接入,所以直接对摄像头进行invite发起点播。 对拉过来的ps流进行解码。 注意点 sip invite构造时需要注意几个字段,...

2018-12-21 22:19:46

阅读数 4232

评论数 0

windows下编译x264库

背景 现在的x264需要通过mingw环境来进行编译,我要编译出64位版本和32位版本的静态,而mingw只是32位环境,所以我选择通过ming-w64+msys2作为编译环境。 安装msys2和MinGW-W64 我们先安装msys2,安装比较简单直接下一步下一步就好了。通过msys2的p...

2018-11-29 09:45:22

阅读数 410

评论数 0

视频流jtter buffer实现的难点

背景 在项目中遇到这样一个问题,sip客户端通过监控网关去点播海康的摄像头,发现图像出来的很慢。抓包发现,码流的最开始是携带sps,pps及关键帧的,那么可以判断出问题可能是如下两点原因: 终端中的媒体库将收到的sps,pps及关键帧信息丢掉了 码流携带的sps,pps及关键帧信息有问题...

2018-11-14 11:28:36

阅读数 110

评论数 0

RTP头的解析及大小端处理的细节

RTP头的解析及大小端处理的细节 在看如何解析RTP头之前,先复习下大端和小端的概念,再分析如何解析RTP头 大端和小端 在之前本以为大端和小端只是针对的多字节,其实在一个字节内的比特顺也有大小端的概念,这里列两个结论 大小端是不同的CPU架构对内存的使用方式不...

2018-09-02 20:53:50

阅读数 732

评论数 0

RGB数据的处理

RGB数据的处理 基本概念 分辨率为640*480的图像,其像素点的个数为 widthxheight,即为640x480 = 307200 二值图像 每个像素通过一位来存储即为二值图,取值只有0和1。 灰度图像 在二值图像中加入许多介于黑色与白色之间的颜色深度,就构成了灰度图像,就典型...

2018-08-07 18:44:30

阅读数 2026

评论数 0

提取pcap文件中的opus及h265码流的小工具

背景 在音视频系统的调试中,经常要抓包进行码流分析,所以写了个小工具,可以直接提取pcap格式抓包文件中的码流。现在小工具支持opus和h265的码流提取。 用法 提取h265视频流 抓包 在windows下用wireshark抓取数据包,如下图 ...

2018-07-27 17:45:57

阅读数 789

评论数 5

python实现的看门狗程序

看门狗通常是用于监控进程是否结束,如果被监控进程结束则会被重启。代码如下: import os,subprocess,shlex,sys print("输入要启动的进程的名字(包括路径):") CommandLine = input() args = shle...

2018-05-29 09:27:39

阅读数 1192

评论数 0

关于JavaScript中的This

this到底是什么 作为类比,在C plus plus中,this的语意是代表本对象,在编写类代码时就已经绑定,必定是该类的一个实例,很明确。在js中,this也是代表着本对象。但是它与C++中不同的是,其是一个动态的概念,至于这个对象是“谁”,是在调用时决定的。 this是在运行时进行...

2018-05-13 20:02:32

阅读数 64

评论数 0

C++11 chrono库在音视频系统中的应用

基本概念 chrono包括三个基本的概念:间隔(Duration),时间(Clock),时间点(Time Point),通过这三个基本概念可以很好的将时间处理抽象出来。 引用C++11的文档说明 Durations They measure time spans,...

2018-04-28 09:31:28

阅读数 137

评论数 0

用circular_buffer实现的播放缓存队列

背景 在我们的一个项目中,开音视频会议时,音频比视频慢了将近一秒,由于历史问题,会议服务器没法进行改动,所以要求在解码端做这样一个兼容处理,主动缓存视频达到将视频延时播放的目的,从而实现音视频的同步。延时的大小可配。 解码播放的基本流程 整个视频解码端的流程如下: ...

2018-04-26 09:29:00

阅读数 510

评论数 0

提示
确定要删除当前文章?
取消 删除