自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(387)
  • 资源 (29)
  • 收藏
  • 关注

原创 webrtc 目录

webrtc 学习过程

2022-03-02 16:10:36 615

原创 webrtc用clang编译支持h264,支持msvc调用库

找到 src\out\x86_debug_clang\obj\pc 下面的peer_connection.vcxproj,用记事本打开,复制。如果还有问题,可能是llvm的版本有问题,需要在dll工程的同目录下创建Directory.build.props 文件,记事本打开编辑。这里是指定llvm应用版本,制定的和webrtc用同一个。2、编译webrtc,生成libwebrtc库。在这里面封装好的库,就可以在msvc里调用了。预处理器这一大堆是比较麻烦的,怎么办?生成sln后,在vs内编译。

2023-10-10 14:33:37 608 1

原创 webrtc 测试video_loopback

先解决没有声音的问题,查看代码是使用了新的音频采集模块,不知道为什么没有声音,等有时间先去看看为什么要替换原来的coreaudio,莫非真的要刷kpi么。通过修改参数配置 我们可以跟踪调试,接下来跟踪webrtc::test::RunTest(webrtc::Loopback);调用webrtc::adm_helpers::Init(audio_device.get());跟踪试试,运行就崩溃,和之前版本一样的问题,解决方法参考之前的文章。到此,demo的音视频都能够测试通过了,接下来开始代码流程。

2023-05-15 15:47:15 936 1

原创 ubuntu20.04安装mysql8

ubuntu20.04 安装mysql8

2022-06-29 11:27:22 509

转载 Linux中buff-cache占用过高解决方案

Linux中buff-cache占用过高解决方案我们在使用free -h查看系统内存的时候,有时间会发现buff/cache很高free -havailable 表示应用程序可以申请到的内存什么是buffbuff(Buffer Cache)是一种I/O缓存,用于内存和硬盘的缓冲,是io设备的读写缓冲区。根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。什么是cachecache(Page Cache)是一种高速缓存,用于CPU和内存之间的缓冲 ,

2022-04-27 10:39:04 3864

原创 AddressSanitizer 查找内存问题

服务器开发,有些时候遇到很奇怪的问题,可能运行几个周会出现一次异常,有些内存问题可以借助AddressSanitizer 定位centos g++版本切换https://blog.csdn.net/liuhongxiangm/article/details/124129742这个方法只是临时生效我是在.bashrc里加了source /opt/rh/devtoolset-10/enableAddressSanitizerAddressSanitizer 是一个性能非常好的C/C++ 内存错误

2022-04-26 14:19:04 354

原创 centos 切换g++

添加源sudo add-apt-repository ppa:ubuntu-toolchain-r/test 安装工具集 gdb等sudo yum install devtoolset-7.x86_64sudo yum install devtoolset-8.x86_64sudo yum install devtoolset-9.x86_64sudo yum install devtoolset-10.x86_64sudo yum install devtoolset-11.x86_64

2022-04-12 17:35:57 539

原创 opensips配置

opensips 代理 freeswitch####### Global Parameters #########log_level=3log_stderror=nolog_facility=LOG_LOCAL0children=4/* uncomment the following lines to enable debugging */#debug_mode=yes/* uncomment the next line to enable the auto temporary

2022-03-25 13:34:19 716

原创 centos7 虚拟机中,网卡不启动的解决方式

使用NAT模式的虚拟centos, 只显示两个网卡,无法连接外网,输入systemctl start network后报错信息"Restarting network (via systemctl): Job for network.service failed because the control process exited with error code.See “systemctl status network.service” and “journalctl -xe” for detail

2022-03-23 11:25:44 2219 2

原创 webrtc源码分析 nack详解

Nack详解

2022-03-03 15:24:16 2141 1

原创 webrtc源码分析 pacer代码流程

2022-03-02 18:57:31 458

原创 webrtc源码分析 视频采集发送流程

1、简述video_loopback demo演示了怎么从call这一层创建流,接下来看一下视频的采集,编码,发送流程,本文只是粗略的跟踪流程,具体细节知识点后续分析。webrtc的更新太快,模块有些调整,也加了些处理流程,所以得重复的去看流程,也是因为脑子不好使,看完接着忘。2、跟踪代码...

2022-03-01 14:38:23 1079

原创 webrtc源码分析 vieo_loopback分析

1 介绍video_loopback demo包含了webrtc 上层网络协议的剩余部分,没有sdp协商,p2p,srtp,实现了从call实现音视频互通的例子。对于动手能力比较强的公司,适合从这层开发,搭建自己的架构模型,实现自由调度,大并发等2 分析源码2.1 demo入口启动入口:src/video/video_loopback_main.cc配置参数:src/video/video_loopback.cc这个文件主要是配置demo的参数,也是我们参考配置的方法简单看几个配置项:AB

2022-02-23 17:03:39 1798

转载 WebRTC源码分析——引用计数系统

引言WebRTC中自己实现了一套引用计数系统,在其基础库模块rtc_base/refcount中提供了相关实现,如下图所示:主要由四个类RefCountInterface、RefCounter、RefCountedObject、scoped_refptr一起构建起WebRTC中的引用计数系统。2. RefCountInterface——引用计数抽象接口RefCountInterface是一个抽象接口类,位于rtc_base/ref_count.h目录下。源码如下:enum class RefCo

2022-02-18 11:33:28 247

原创 webrtc 状态获取

webrtc状态获取简单调用回调类 class NRPlayerStatsObserver : virtual public webrtc::RTCStatsCollectorCallback { public: NRPlayerStatsObserver(); virtual ~NRPlayerStatsObserver(); virtual void OnStatsDelivered(const rtc::scoped_refptr<const RTCStatsReport&

2022-02-18 11:08:28 844

转载 webrtc源码分析 拥塞控制下-码率分配

1、前言本文是webrtc拥塞控制的下文,主要介绍的是从cc-controller获取码率之后,如何将码率设置到PacingController控制发送速率,同时如何将码率分配调整到各个stream,各个stream的layer, simulcast,fec中2、正文2.1 整体码率控制结构webrtc中是会同时存在多个stream,但所有的stream都会共用一个码率预估和平滑发送,这很符合逻辑(虽然gcc保障带宽公平性),发送数据的流程如上图数字所标,不同的stream最终发包的时候都是发送到

2022-02-15 15:55:33 1218

转载 webrtc源码分析 拥塞控制上-码率预估

1 前言本文是webrtc中拥塞控制的上文,主要是分析webrtc中的拥塞控制的码率探测,预估和调整的部分,介绍了整体框架和原理以及相关的类;webrtc版本:M912 正文2.1 整体框架webrtc中的部分码控结构如下图所示,从socket层接收到数据后,到transport解析rtcp包处理得到feedback,通过call将feedback转发到对应sendstream上的rtcp处理模块,最终通过RtpTransportControllerSend将feedback转发到GoogCcNe

2022-02-15 11:36:30 1686 1

转载 WebRTC的拥塞控制和带宽策略

介绍在视频通信的技术领域WebRTC已成为主流的技术标准,WebRTC包涵了诸多优秀的技术,譬如:音频数字信号处理技术(AEC, NS, AGC)、编解码技术、实时传输技术、P2P技术等,这些技术目的都是为了实现更好实时音视频方案。但是在高分辨率视频通信过程中,通信时延、图像质量下降和丢包卡顿是经常发生的事,甚至在WiFi环境下,一次视频重发的网络风暴可以引起WiFi网络间歇性中断,通信延迟和图像质量之间存在的排斥关系是实时视频过程中的主要矛盾。分析WebRTC是如何解决这个矛盾之前,先来看看我们在在线

2022-01-19 14:59:52 835

转载 webrtc源码分析 pacer一

背景介绍若仅仅发送音频数据,不需要PACER模块:1)一帧音频数据本身不大,不会超过以太网的最大报文长度。一个RTP报文可以搞定,按照打包时长的节奏发送就可以。但视频数据不能按照音频数据的思路发送,一帧视频可能很大,远大于以太网的1500byte,需要分别封装在几个RTP报文中,若这些视频帧RTP报文一起发送到网络上,必然会导致网络瞬间拥塞。产生丢包抖动等异常。2)大多数编解码格式下,一帧音频数据长度固定,音频码率持续平稳。码率不会出现忽高忽低现象。但是一帧视频数据长度受内容影响严重。I、P、B帧间的

2022-01-18 10:26:42 464

原创 威海皇冠学校及房地产关联分析

#威海皇冠房地产分析小学排名皇冠小学经区实验小学(杨家滩小学)青岛路小学新都小学长峰小学最好的当然是皇冠小学,各种好不用多说,其次是经区实验小学皇冠小学学区划分目前来说,皇冠小学的学区范围涵盖了皇冠中区和皇冠北区(海峰路以北,海滨路以东整个区域),但是随着悦海小学的建设与投入使用(预计在2019年底),皇冠北区将划归到悦海小学学区。注:海瞳路社区、海上明珠、建东悦海湾、山水文园、清华园、悦海华府、悦海花园、祥泰紫宸、悦海名居、悦海世家等小区不在属于皇冠中小学学区。所以,今天我们

2021-12-14 18:03:03 1948

转载 浅谈WebRTC NetEQ

浅谈WebRTC NetEQWebRTC Native 代码里面有很多值得学习的宝藏,其中一个就是 WebRTC 的 NetEQ 模块。根据 WebRTC 术语表 对 NetEQ 的解释:A dynamic jitter buffer and error concealment algorithm used for concealing the negative effects of network jitter and packet loss. Keeps latency as low as pos

2021-12-06 14:00:03 547

转载 webrtc音视频同步详解

https://blog.csdn.net/sonysuqin/article/details/1072971571、webrtc 版本 202108202、时间戳音视频采样后会给每个音频采样、视频帧打一个时间戳,打包成RTP后放在RTP头中,称为RTP时间戳,RTP时间戳的单位依赖于音视频流各自的采样率。RTP Header格式如下:2.1 视频时间戳视频时间戳的单位为1/90000秒,但是90000并不是视频的采样率,而只是一个单位,帧率才是视频的采样率。不同打包方式下的时间戳:

2021-12-02 17:29:28 895

原创 webrtc源码分析 渲染延时

1.为了平滑渲染,造成延时FrameBuffer::StartWaitForNextFrameOnQueue() |FrameBuffer::FindNextFrame在FindNextFrame里面有计算渲染时间 if (frame->RenderTime() == -1) { frame->SetRenderTime(timing_->RenderTimeMs(frame->Timestamp(), now_ms)); }

2021-11-29 17:09:04 1984

原创 webrtc 视频解码及渲染过程

1 解码解码调用RepeatingTaskHandle::DelayedStartFrameBuffer::StartWaitForNextFrameOnQueue() |VideoReceiveStream2::StartNextDecode |VideoReceiveStream2::HandleEncodedFrame |VideoReceiveStream2::DecodeAndMaybeDispatchEncodedFra

2021-11-26 17:12:01 3291

转载 webrtc视频接收过程二

webrtc JitterBuffer1、webrtc版本2021.8.202、概要旧版的视频JitterBuffer实现在VCMJitterBuffer类中,目前已经不用,新版的JitterBuffer的功能被分散到多个模块中,主要包括:PacketBuffer:负责帧的完整性,保证组成帧的每个包序列号连续,并且有一个包标识帧的开始,有一个包标识帧的结束;RtpFrameReferenceFinder:负责给每个帧设置好参考帧,同时兼顾GOP内各帧的连续性;FrameBuffer:负责帧

2021-11-26 14:43:45 1518

原创 webrtc 视频接收过程一

视频接收调用1、网络接收线程PhysicalSocketServer::Wait |AsyncUDPSocket::OnReadEvent //windows 通过信号槽的方式发送 |AllocationSequence::OnReadPacket //win 接收槽 |UDPPort::HandleIncomingPacket |UDPPort::OnRead

2021-11-23 13:52:32 1891

原创 webrtc替换ffmpeg

webrtc替换ffmpeg,解决微软编译器开启h264编译不过问题win10+vs2019webrtc 默认是clang编译器,编译出来的库,在vs下不能用,出现各种各样的错误。如果设置了use_lld=false is_clang=false,开启h264,ffmpeg又编译不过。尝试替换掉ffmpeg,解决问题下载编译好的ffmpeg下载好ffmpeg,并且放在third_party下编辑\src\modules\video_coding下的BUILD.gn修改rtc_library

2021-07-29 15:50:49 1165 5

原创 webrt分析六(nack)

nack是什么丢包重传(NACK)是抵抗网络错误的重要手段。NACK在接收端检测到数据丢包后,发送NACK报文到发送端;发送端根据NACK报文中的序列号,在发送缓冲区找到对应的数据包,重新发送到接收端。NACK需要发送端,发送缓冲区的支持。nack流程发送端发送rtp,到达接收端时,发现丢包,接收端发送nack请求,发送端会从历史队列中取出数据重发。nack协议在rfc4585协议中定义可重传未到达数据的类型有二种:1 RTPFB:rtp报文丢失重传(丢包重传)。2 PSFB:指定净荷重传,

2021-07-07 15:08:32 794

原创 webrtc分析五(rtt计算)

rtt是什么rtt:往返时延(round-trip time,RTT) 是网络请求从起点到目的地然后再回到起点所花费的时长(不包括接收端的处理时间)。RTT是分析网络性能的一个重要指标,我们通常使用RTT来诊断网络连接的速度,可靠性以及拥塞程度。rtt计算webrtc的rtt计算分两种情况存在发送流,发送端估计。通过Sender Report(SR) 和Receiver Report(RR)计算只存在接收流,接收端估计。通过RTCP Extended ReportRTCP(XR)计算发送端RTT

2021-07-06 11:42:49 2368

原创 webrtc分析四(关键帧请求,FIR /PLI区别)

webrtc 关键帧请求分PLI,SLI,FIR。但是有何区别?PLI 是Picture Loss Indication图片丢失提示消息表明突发性的丢包影响到了一个或多个帧中的多个包。发送方可以通过重传这些包或者生成一个新的I帧以作出回应。但一般来说,PLI同时表现得像一个NACK和一个FIR,因此,通过使用PLI,接收端为发送端如何对该请求作出响应提供了更大的灵活度SLI 是Slice Loss Indication。切片丢失提示消息表明该包丢失影响到单个帧的部分(即,多个macroblock)。

2021-07-05 17:45:04 3488

原创 webrtc分析三(关键帧请求)

webrtc 采用rtp/rtcp传送音视频,网络存在丢包。采用fec和nack对抗丢包。但是并不是所有情况都能通过丢包重传解决。有些情况是在规定的时间内没有补上,再等就延时过大,失去补报的意义了。所以会采用请求关键帧的方式快速刷新。请求关键帧的场景1、新加入请求播放,无法初始化解码器2、丢包过多,jitterbuffer过大3、nack list过大4、获取帧数据超时5、解码出错需要初始化解码器,sps,ppsH264SpsPpsTracker::FixedBitstream H264Sp

2021-07-05 16:47:23 1577

原创 H.264中I帧和IDR帧的区别

IDR(Instantaneous Decoding Refresh)–即时解码刷新。转自:https://www.cnblogs.com/yinxiangpei/articles/3889865.html I和IDR帧都是使用帧内预测的。它们都是同一个东西而已,在编码和解码中为了方便,要首个I帧和其他I帧区别开,所以才把第一个首个I帧叫IDR,这样就方便控制编码和解码流程。IDR帧的作用是立刻刷新,使错误不致传播,从IDR帧开始,重新算一个新的序列开始编码。而I帧不具有随机访问的能力,这个功能是由I

2021-07-05 13:38:43 150

原创 webrtc分析二(video loopback)

webrtc 自带了好多测试用例看整体流程的有:peerconnection_client 和 peerconnection_server如果只看音视频互通流程的还是:video_llopback但是不巧的是,这个demo跑不起来,一跑就崩溃,分析一下原因,改造一下。原因:原因是 底层的消息循环接收到了不应该出现的消息,崩溃了为什么呢?原因是 demo把render的创建放到了task_queue里面了,而render是win32创建的窗口,这个窗口的消息循环就跟着在线程里面了,窗口

2021-07-01 10:14:08 431 3

原创 webrtc 分析一(windows编译)

webrtc 更新速度太快了,再一次分析一下源码吧。基于4484版本环境:windows10vs2019环境配置如官网变量设置set DEPOT_TOOLS_UPDATE=0set DEPOT_TOOLS_WIN_TOOLCHAIN=0set GYP_MSVS_VERSION=2019set GYP_MSVS_OVERRIDE_PATH =C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterpriseset GYP_GEN

2021-07-01 09:48:23 246

原创 sudo apt-get update 出现InRelease问题

sudo apt-get update 出现InRelease问题ubuntu@ubuntu:~$ sudo apt-get update[sudo] ubuntu 的密码:命中:1 http://repo.zabbix.com/zabbix/3.2/ubuntu xenial InRelease命中:2 http://security.ubuntu.com/ubuntu xenial-security InRelease命中:3 http://cn.archive.ubuntu.com/ubun

2021-06-02 16:14:13 1126

原创 webrtc的音视频同步处理二

webrtc音视频同步处理二主要代码在src/webrtc/video下video_receive_stream.ccrtp_streams_synchronizer.ccstream_synchronization.ccsyncable_video_ 同步的视频syncable_audio_ 同步的音频audio_measurement_ 存放音频timestamp和ntp对应关系video_measurement_ 存放视频timestamp和ntp对应关系sync_ 处理计算相对

2021-03-30 10:55:47 217

原创 webrtc的音视频同步处理一

webrtc的音视频同步处理一webrtc内部的音视频同步是怎么处理的?几个主要词:capture time,render time,rtp的 timestamp,sr,计算ntp先看视频的采集过程1、调用堆栈2、采集video_capture_impl.cc的 VideoCaptureImpl::IncomingFrame中调用set_timestamp_ms() 设置时间rtc::TimeMillis() 这个时间获取CLOCK_MONOTONIC:从系统启动这一刻起开始计

2021-03-29 16:14:26 576

原创 QtCreator无法调试终端程序,启动报错SIGSTOP

现象qt调试终端程序,当有创建线程的时候,收到信号SIGSTOP 而退出,无法调试程序。解决解决方式是,设置GDB不处理SIGSTOP ,在QtCreator中进入GDB命令设置窗口:Tools -> Options -> Debugger -> GDB -> Additional Startup Command在 Additional Startup Command 中添加如下内容:handle SIGSTOP nostop pass...

2021-03-16 17:19:02 1832 3

原创 海思hisi 使用std::thread崩溃问题解决

平台:海思3516dsdk:hisi-v600在使用c++11 线程std::thread时,创建线程会崩溃cflag增加 -mcpu=cortex-a9

2021-01-20 17:50:04 638

原创 linux下so包含函数名冲突解决

一个项目可能包含多个so,但是不同的so中可能包含相同的函数名。在编译和连接的时候不会报错,但是在执行的时候可能会出现莫名其妙的错误,多是段错误。解决办法1、修改函数名(费时费力)2、隐藏so中的函数最稳妥的办法:cflag 加上 -fvisibility=hidden要导出的函数加上 attribute ((visibility(“default”)))举例:int RtpRtcpInit() attribute((visibility(“default”)));class

2021-01-20 16:01:19 1373

how to enable android usb host api

how to enable android usb host api

2015-02-26

arm-linux-gcc 4.4.3

arm-linux-gcc 4.4.3

2015-02-04

android硬编码h264

android 用新api mediacodec硬编码h264, 发送到vlc播放。

2013-12-26

查找二叉树

二叉树实现 递归,非递归,层次遍历实现

2013-12-18

数据结构与算法分析c++描述

数据结构与算法分析c++描述 高清 此书对c++程序员帮助很大

2013-12-17

inotify 文件监视

linux 文件监视事件 inotify, inotify 是一个 Linux 内核特性,它监控文件系统,并且及时向专门的应用程序发出相关的事件警告,比如删除、读、写和卸载操作等。

2013-12-16

Tcp转发服务器代码

tcp转发服务器,代码比较简单,适合初学者,共勉! qt调试

2013-12-13

利用ffmpeg x264 编解码h264

利用ffmpeg x264 编解码h264 把h264编码的mp4解码保存为rgb ppm文件,然后又把rgb 编码为h264格式

2013-04-19

ffmpeg 入门资料

ffmpeg入门学习 配合ffmpeg-tutorial-master代码和pdf教程,对初学者非常有利

2013-04-16

Boost程序库完全开发指南

Boost程序库完全开发指南 c++准标准库 高清版 希望大家一起学习

2012-12-26

LINUX与UNIX.Shell编程指南

LINUX与UNIX.Shell编程指南 高清 经典,学习linux开发与维护的必备知识

2012-09-24

TCP/IP协议详解卷二

TCP/IP协议详解卷二 这个不用多说,难得的高清版 W.Richard Stevens

2012-06-26

TCP/IP 协议详解卷三

W.Richard Stevens TCP/IP 协议详解卷三 这个不必多说啊,难得的高清版

2012-06-26

TCP/IP协议详解卷一

TCP/IP协议详解卷一 这个就不必多少了吧 W.Richard Stevens 难得的高清

2012-06-26

WINDOWS网络与通信程序设计 代码

[WINDOWS网络与通信程序设计].王艳平. 代码 原理和配套代码都有。讲解详细,技术全面。这是代码,可直接运行

2012-06-20

[WINDOWS网络与通信程序设计].王艳平.扫描 part5

[WINDOWS网络与通信程序设计].王艳平.扫描 part5 清晰版,原理和配套代码都有。讲解详细,技术全面

2012-06-20

[WINDOWS网络与通信程序设计].王艳平.扫描 part4

[WINDOWS网络与通信程序设计].王艳平.扫描 part4 清晰版,原理和配套代码都有。讲解详细,技术全面

2012-06-20

[WINDOWS网络与通信程序设计].王艳平.扫描 part3

[WINDOWS网络与通信程序设计].王艳平.扫描 part3 清晰版,原理和配套代码都有。讲解详细,技术全面

2012-06-20

[WINDOWS网络与通信程序设计].王艳平.扫描 part12

[WINDOWS网络与通信程序设计].王艳平.扫描 part2 清晰版,原理和配套代码都有。讲解详细,技术全面

2012-06-20

[WINDOWS网络与通信程序设计].王艳平.扫描 part1

[WINDOWS网络与通信程序设计].王艳平.扫描 part1 清晰版,原理和配套代码都有。讲解详细,技术全面

2012-06-20

windows 核心编程 中文第五版 高清

windows 核心编程 中文第五版 高清 超清,经典书籍,windows程序员必备

2012-05-02

windows 核心编程 中文第五版 高清 part2

windows 核心编程 中文第五版 高清 part2 绝对的高清,看看大小就知道了,经典书!

2012-05-02

windows核心编程 中文第五版

windows 核心编程 中文 第五版 高清 ,绝对的高清,看看文件大小就知道了。经典的书籍!!

2012-05-02

数据结构与算法分析C++描述 第3版

数据结构与算法分析C++描述 第3版 高清

2012-03-27

C++编程思想.rar

c++ 编程思想 这个不用我在描述,高清版的。

2012-03-26

gdi+ 绘制半透明 窗口

gdi+ 绘制半透明 窗口,绘制png,非常有借鉴意义。欢迎交流

2012-03-20

linux shell 编程

讲解linux shell编程,讲解详细,很清晰,对刚入门的很适合

2011-12-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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