一苇渡江694
码龄13年
  • 8,955,733
    被访问
  • 603
    原创
  • 197
    排名
  • 3,848
    粉丝
  • 42
    铁粉
关注
提问 私信

个人简介:无有功德,一苇渡江

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2009-08-03
博客简介:

一蓑烟雨任平生 也无风雨也无晴

博客描述:
白云一片去悠悠 青枫浦上不胜愁
查看详细资料
  • 6
    领奖
    总分 2,638 当月 16
个人成就
  • 博客专家认证
  • 获得2,176次点赞
  • 内容获得996次评论
  • 获得2,913次收藏
创作历程
  • 43篇
    2022年
  • 1篇
    2020年
  • 5篇
    2019年
  • 10篇
    2018年
  • 116篇
    2017年
  • 232篇
    2016年
  • 236篇
    2015年
成就勋章
TA的专栏
  • WebRTC Native M96 Cookbook
    付费
    43篇
  • Go从入门到不放弃
    付费
    45篇
  • Go从不放弃到实战
    付费
    83篇
Google Analytics
  • 最近
  • 文章
  • 资源
  • 收藏
搜TA的内容
搜索 取消

WebRTC Native M96收集网卡地址信息以及筛选过滤VPN网络(CreateNetworks、FilterNetworks)

网络类型很多,比如网线、WIFI、蜂窝网络、VPN、LOOPBACK等等。那么WebRTC在连接的时候,就可以对网络进行筛选,尤其是对于多网卡,多种连接方式的设备。WebRTC 收集网卡信息的时机线程: signaling thread线程: network thread在StartUpdating()中,向消息队列抛一个消息:kUpdateNetworksMessage接收到 KUpdateNetworksMessage 后调用 BasicNetworkManager::UpdateNetwor
原创
发布博客 2022.07.12 ·
9234 阅读 ·
0 点赞 ·
0 评论

WebRTC Native M96编码规范向导(C++ C Python Java Oc Gn)

https://webrtc.googlesource.com/src.git/+/17071682f7fa70589e194b5882b43c611d055c74/style-guide.mdWebRTC遵循Chromium和Google C++ type的编码规范,如果两者有冲突,那么请参照Chromium的编码规范。《Chromium C++ style guide》《Google C++ Style Guide》WebRTC使用C++11:.h和.cc要成对的出现,并且使用同样的名字,在相同的文
原创
发布博客 2022.06.24 ·
10228 阅读 ·
1 点赞 ·
1 评论

WebRTC Native M96 基础Base模块介绍之网络相关的封装

与版本无关的 IP 地址类,包装了 in_addr 和 in6_addr 的联合。对IP地址的封装IPAddress和InterfaceAddress,IPAddress重载了==、!=、、地址支持string()、sensitive_string()和uint32_t(AF_INET)()类型输出,还支持IPV4转IPV6类型()。InterfaceAddress是IPAddress的子类(),增加了IPv6属性()使用:还提供一些方法,比如字符串转IP:rtc_base SocketAddr...
原创
发布博客 2022.06.23 ·
4824 阅读 ·
1 点赞 ·
0 评论

WebRTC Native M96 基础Base模块介绍之实用方法的封装(MD5、Base64、时间、随机数)

实现了多种类型的消息摘要算法,DIGEST_MD5、DIGEST_SHA_1、DIGEST_SHA_224、DIGEST_SHA_256、DIGEST_SHA_384、DIGEST_SHA_512[];MD5:MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。HMAC是密钥相关的哈希运算消息认证码(Hash-based Message Aut
原创
发布博客 2022.06.22 ·
1586 阅读 ·
0 点赞 ·
0 评论

WebRTC Native M96 基础Base模块介绍之字符串处理相关的封装

字符串相关操作是永恒的话题,c++的string类给我们提供很多字符串操作的方法,但是再具体的情况下,还需要自己实现一些字符串的组装、格式化、转换等。rtc::GetStringFromJsonObject使用:rtc::StringBuilder使用:rtc::StringFormat使用:rtc::ToString的使用:rtc_base crypt_strings封装了一个加密字符串CryptString,加密字符串的字符可以是任意字符使用:rtc_base string_encode
原创
发布博客 2022.06.20 ·
2600 阅读 ·
0 点赞 ·
0 评论

WebRTC Native M96 基础Base模块介绍之缓冲区相关的封装(CopyOnWriteBuffer、ByteBufferWriter、BitBufferWriter、BufferT、Buf

在WebRTC中,不论是发送接收数据通道的数据、还是发送接收音视频数据,数据本身都存储于一个临时的Buffer中,这个Buffer的实现类为CopyOnWriteBuffer。顾名思义,该Buffer实现了 “写时复制” 的技术。封装了一个写时复制缓存CopyOnWriteBuffer,其实就是封装了一个共享指针Buffer以及处理nullptr Buffer的情况,WebRTC中常用于RTP包的传递。Copy-on-write 主要用于共享操作系统进程的虚拟内存,在 fork 系统调用的实现中。通常,该进
原创
发布博客 2022.06.16 ·
1881 阅读 ·
0 点赞 ·
0 评论

WebRTC Native M96 H264打包方式解读--kH264SingleNalu、kH264StapA、kH264FuA

在中介绍了WebRTC中H264的相关知识,这边不再啰嗦。抓了一个rtp的包:RTP包headerV:RTP协议的版本号,占2位,当前协议版本号为2Version: (2 bits) Indicates the version of the protocol. Current version is 2.P:填充标志,占1位,如果P=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分。P (Padding): ...
原创
发布博客 2022.06.14 ·
5545 阅读 ·
0 点赞 ·
0 评论

WebRTC Native M96 SDK接口封装--setLogFile设置 SDK 输出的日志文件

日志,是排查问题的主要手段。WebRTC自己带有日志模块,但是不够灵活,我们需要上层自己封装一层,提供成接口供上层调用。比如,设置日志生成的位置,设置日志的大小,以及设置日志的等级。...
原创
发布博客 2022.06.09 ·
3348 阅读 ·
0 点赞 ·
1 评论

WebRTC Native M96视频基础知识介绍--使用H264

名词解释视频泛指将动态影像以电信号方式加以捕捉、纪录、处理、存储、发送与重现的各种技术。视频格式视频是现在电脑中多媒体系统中的重要一环。为了适应储存视频的需要,人们设定了不同的视频文件格式以将视频和音频放在一个文件中,以方便同时播出。什么3gp、mp4、avi啊,这些视频格式,从中学时代就有听说。首先,MP4、AVI、MKV都是本地视频文件的后缀,在windows系统下,用于提示操作系统应该采用哪个应用程序打开。而在流媒体领域,这些都被称为『视频封装格式』视频协议是针对网络流媒体而言的,也
原创
发布博客 2022.04.27 ·
17108 阅读 ·
0 点赞 ·
0 评论

WebRTC Native M96音频基础知识介绍--使用Opus

声波声音是振动产生的声波,通过介质(气体、固体、液体)传播并能被人或动物听觉器官所感知的波动现象。声音的特性可由三个要素来描述,即响度、音调和音色音频(音调)音调就是音频。物理学中用每秒内振动的次数–频率来描述物体振动的快慢。物体振动的快(即频率高)则音调高,物体振动的慢(及频率低)则音调低。声音的频率一般会以赫兹表示,记为Hz,指每秒钟周期性震动的次数音量(响度)响度就是声音的大小强弱。取决于物体振动的幅度分贝是用来表示声音强度的单位,记为dB。数字音频数字音频是指使用脉冲编码调制、.
原创
发布博客 2022.04.26 ·
3451 阅读 ·
0 点赞 ·
0 评论

WebRTC Native M96 SDK接口封装--muteRemoteVideoStream接收/停止接收指定远端用户的视频流

之前,介绍了如何实现muteLocalVideoStream和muteLocalAudioStream。接口定义(Agora)接口名:   muteRemoteVideoStream接口定义:virtual int agora::rtc::IRtcEngine::muteRemoteVideoStream(uid_t userId, bool mute) 接口功能:   接收/停止接收指定远端用户的视频流。注解: 
原创
发布博客 2022.04.06 ·
8927 阅读 ·
0 点赞 ·
0 评论

WebRTC Native M96 SDK接口封装--muteLocalAudioStream开关本地音频发送

摊牌了,水了一篇。因为之前介绍了muteLocalVideoStream接口的实现,那么实现muteLocalAudioStream就大同小异了。接口定义(Agora)接口名:   muteLocalAudioStream接口定义:virtual int agora::rtc::IRtcEngine::muteLocalAudioStream(bool mute)接口功能:   开关本地音频发送。  &nb
原创
发布博客 2022.03.24 ·
19838 阅读 ·
0 点赞 ·
0 评论

WebRTC Native M96 SDK接口封装--muteLocalVideoStream开关本地视频发送

https://dabaojian.blog.csdn.net/article/details/123587207已经介绍了如何开关本地预览,现在介绍一下mute/unmute本地音视频设备的接口。比如,实时直播课课间休息,老师想要干一点自己的事情,例如,对着摄像头补妆一下,但是又不想被学生看到。这个时候可以调用muteLocalVideoStream接口,本地的摄像头还依然在采集的数据,本地预览还是正常的,只是采集的视频数据不发送到远端用户。所以,这么分析之后,比较明朗了,这个接口,不需要操作硬
原创
发布博客 2022.03.24 ·
8306 阅读 ·
1 点赞 ·
0 评论

白云一片去悠悠,青枫浦上不胜愁

发布动态 2022.03.19

WebRTC Native M96 SDK接口封装--startPreview开启视频预览

今天聊的事儿,跟peer connection一点关系没有,只是开启本地预览。在没有进行任何网络连接的时候,用户也可以先把本地的摄像头打开,孤芳自赏一下。如何枚举视频设备,已经介绍过了:https://dabaojian.blog.csdn.net/article/details/123511090如何设置本地和远端的视频显示视图,也已经介绍过了:接口定义(Agora)接口名:startPreview接口定义:virtual int agora::rtc::IRtcEngine::start.
原创
发布博客 2022.03.18 ·
3652 阅读 ·
1 点赞 ·
0 评论

WebRTC Native M96数据统计-- 使用PeerConnection::GetStats获取WebRTC实时统计信息

ShineMo Demohttps://rtc.api.zhlh.sinopec.com/web端可以使用以下功能来看数据统计:chrome://webrtc-internals/chrome://webrtc-internals/https://rtc.api.zhlh.sinopec.com/下面介绍native端的数据统计!!!监控打点的意义实时音视频通话受网络状态影响很大,网络丢包延时都会导致视频通话质量。受设备性能影响也很大,CPU或者内存使用率高,可能导致音视频编解码卡顿。
原创
发布博客 2022.03.17 ·
755 阅读 ·
0 点赞 ·
0 评论

WebRtc Native M96 远端视频接收之-VideoReceiveStream2中FrameBuffer原理(6)

经过一系列的操作,最终完整的frame回到RtpVideoStreamReceiver2::OnCompleteFrames中。并且,通过complete_frame_callback_->OnCompleteFrame(std::move(frame));回调到VideoReceiveStream2类中。这时候,就需要frame_buffer_出场了!!!std::unique_ptr<video_coding::FrameBuffer> frame_buffer_;当组帧完.
原创
发布博客 2022.03.15 ·
444 阅读 ·
0 点赞 ·
0 评论

WebRTC Native M96 SDK接口封装--setDevice指定视频设备

生活继续前一篇写了如果枚举视频设备,这里就谈一谈如何设置设备。在实际使用过程中,有的设备有多个视频采集设备,这个时候,用户可以自己选择自己需要使用哪个一个摄像头。这样,就需要先枚举设备,给用户一个设备列表,然后用户选择一个设备,通过接口设置到WebRTC中。奇怪:这里需要注意一下,声网的接口叫setDevice,而不是setVideoDevice。接口定义(Agora)接口名:setDevice接口定义:virtual int agora::rtc::IVideoDeviceManag.
原创
发布博客 2022.03.15 ·
1267 阅读 ·
0 点赞 ·
0 评论

WebRTC Native M96 SDK接口封装--enumerateVideoDevices获取系统中所有的视频设备列表

不管怎样,活着便是盛宴!!!设备管理是重要的一环,在用户的实际使用过程中,会遇到各种各种的设备问题。这里,讲一下如何枚举系统中的所有的视频设备列表。接口定义(Agora)接口名:enumerateVideoDevices接口定义:virtual IVideoDeviceCollection* agora::rtc::IVideoDeviceManager::enumerateVideoDevices()接口功能:获取系统中所有的视频设备列表。参数:无返回:一个包含系统中所有视频设.
原创
发布博客 2022.03.15 ·
5087 阅读 ·
0 点赞 ·
0 评论

WebRTC Native M96 SDK接口封装--setupLocalVideo、setupRemoteVideo设置本地(远端)视图

稀里糊涂介绍了一堆,那么怎么显示本地视频和远端视频呢?当然,有两种方式:1.SDK内部渲染,应用给SDK设置一个view,由SDK完成渲染2.由应用自己渲染,通过onCaptureVideoFrame将本地摄像头采集的数据回调给应用,通过onRenderVideoFrame将远端视频数据回调给应用,由应用自己显示这里,主要介绍第一种方法!!!!接口定义(Agora)接口名:setupLocalVideo()和setupRemoteVideo()接口定义:virtual int rtc::I
原创
发布博客 2022.03.14 ·
1767 阅读 ·
0 点赞 ·
0 评论
加载更多