![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
音视频
文章平均质量分 68
zrjliming
砖搬的节奏,永无止境
展开
-
四、Mediasoup Js和 C++ 管道通信的过程
整体分为两部分1、 js对c++读写消息,_consumerSocket和producerSocket2、c++对js读写消息,c++收到都是底层都是通过libuv的uv_read_start和uv_write。原创 2023-09-11 21:37:19 · 402 阅读 · 0 评论 -
三、Mediasoup进程通信实现的原理
Mediasoup 创建父子进程,js与c++进程交互的通道worker.js构造函数中创建父子进程,c++通过libuv的socket可以实现 JavaScript 与 C++ 之间的相互收发消息。原创 2023-09-11 21:25:35 · 471 阅读 · 0 评论 -
二、Mediasoup启动过程
使用 child_process.spawn() 方法创建了一个子进程,并将它赋值给 this.#child。env:指定子进程的环境变量。这里设置了 MEDIASOUP_VERSION 变量,并将父进程的环境变量继承给子进程。stdio:指定子进程的标准输入、输出和错误流的处理方式。这里使用管道 (pipe) 来处理子进程的输出和错误。spawnBin:要执行的命令或可执行文件的路径。options:一个对象,用于配置子进程的选项。spawnArgs:传递给命令的参数数组。原创 2023-09-11 21:19:14 · 256 阅读 · 0 评论 -
一、Mediasoup源码介绍
RtpStreamSend对象,消费者发送数据给客户端,通过RtpStreamSend方法。RtpStreamSend继承自RtpStream,这个类处理Rtp数据流的收发。RtpStream使用到了RtpPacket,这个包是用于对Rtp数据包的分析,Rtp数据有数据包头,对于包头每一个字段的定义都是在这个Packet里面操作的因为要对整个数据进行处理,所以使用SeqManager,序列管理器。原创 2023-09-11 21:01:31 · 299 阅读 · 0 评论 -
SDP中的RTP头扩展
http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01(Extension ID 3):该头扩展用于传输广域拥塞控制信息,以帮助网络中的设备进行拥塞控制。http://www.webrtc.org/experiments/rtp-hdrext/video-content-type(Extension ID 6):该头扩展用于指示视频内容的类型,例如是摄像头捕获的实时视频还是事先录制的视频。原创 2023-08-17 11:38:34 · 321 阅读 · 0 评论 -
SDP 与Rtcp-fb
SDP(Session Description Protocol)是一种用于描述多媒体会话的协议,它在会话层起着重要的作用。SDP的主要功能是提供会话的元数据和配置信息,以便参与者能够协商和建立一致的会话。以下是SDP在会话层的作用:会话描述:SDP提供关于会话的描述,包括会话的起始时间、结束时间、会话名称、会话发起者等。这些信息帮助参与者了解会话的基本属性。媒体描述:SDP包含了关于会话中每个媒体流的描述,例如音频、视频、数据等。媒体描述包括媒体类型、传输协议、编解码器信息、网络地址等。原创 2023-08-17 11:24:58 · 624 阅读 · 0 评论 -
mars源码Tcp分析链接
【代码】mars源码Tcp分析链接。原创 2023-02-21 17:00:12 · 269 阅读 · 0 评论 -
Protobu编译本地环境搭建
C++,Protobu, PB windows原创 2023-01-11 21:04:28 · 151 阅读 · 0 评论 -
linux安装python升级python
linux安装python或者python升级流程linux自带的python是3.6版本的编译webrtc报错PythonL: invalid syntax file "", line 1要升级为python3.9。原创 2022-12-26 16:00:25 · 1524 阅读 · 0 评论 -
七.二 VideoChannel与VideoReceiveStream 关联
前言视频接收端流程比较复杂分六章进行介绍第一是 RTPTransport创建第二是 VideoChannel与VideoReceiveStream 关联第三是 视频接收端组包流程 发现有效的帧。第四是 jitterbuffer 与 PacketBuffer,RtpFrameReferenceFinder,FrameBuffe第五是 视频接收端解码分析第六是 视频接受端渲染分析前言1Channel 的产生是根据 SDP 的内容进行创建的,SDP 中的 audio 对..原创 2021-09-28 18:09:52 · 552 阅读 · 0 评论 -
七.一 RTPTransport创建
前言视频接收端流程比较复杂分六章进行介绍第一是 RTPTransport创建第二是 VideoChanne与VideoReceiveStream 关联第三是 视频接收端组包流程 发现有效的帧。第四是 jitterbuffer 与 PacketBuffer,RtpFrameReferenceFinder,FrameBuffe第五是 视频接收端解码分析第六是 视频接受端渲染分析目录一 基本概念Channel,Stream,Track二 AddTransceiver...原创 2021-09-28 17:49:44 · 516 阅读 · 0 评论 -
六 SDP解析
目录一SDP协议介绍二SDP解析一SDP协议介绍SDP全称是Session Description Protocol,翻译过来就是描述会话的协议。主要用于两个会话实体之间的媒体协商SDP描述由许多文本行组成,文本行的格式为<类型>=<值>,<类型>是一个字母,<值>是结构化的文本串,其格式依<类型>而定。 具体内容请百度二SDP解析1调用 createOffer 在setLocalDescription后2 Pe原创 2021-09-28 16:28:15 · 363 阅读 · 0 评论 -
八 WebRTC 关键帧请求PLI与FIR
目录一 关键帧请求场景二 PLI与FIR前言: IDR Request关键帧也叫做即时刷新帧,简称IDR帧。对视频来说,IDR帧的解码无需参考之前的帧,因此在丢包严重时可以通过发送关键帧请求进行画面的恢复。关键帧的请求方式分为三种:RTCP FIR反馈(Full intra frame request)、RTCP PLI 反馈(Picture Loss Indictor)或SIP Info消息,具体使用哪种可通过协商确定.一 关键帧请求场景1.1 H264解码无sps,pps信息.原创 2021-09-22 12:13:27 · 2292 阅读 · 0 评论 -
五 Webrtc端对端基本流程
目录一基本流程二 创建媒体约束 RTCConfig三初始化rtc的能力四bindTrack五Ice概念一基本流程1.1在join加入会议后createPeerconnection ,biandTrack1.2createOffer 在setLocalDescription开发收集ice1.3setRemoteDescription 算是协商完成当媒体协商完成后,webrtc开始建立网络连接,这个过程称为ICE1.4添加addRemoteI.原创 2021-09-22 11:43:01 · 504 阅读 · 0 评论 -
四 Android Studio 单步调试 WebRTC Android
目录一编译 Debug 包二 工程配置三 LLDB断点调试配置一编译 Debug 包前言:之前开发过程中,WebRTC 在 Android 上的断点调试比较麻烦,一直困扰没有解决,后与IOS开发同学交流发现xcode是可以的,变通过LLDB验证最后是可行的打断点自然需要使用到包含调试信息,编译rtc库避免编译时这些信息被 strip 掉,因此需要修改webrtcsrc目录下 build/toolchain/android/BUILD.gn文件二 工程配置...原创 2021-08-31 11:19:41 · 1147 阅读 · 1 评论 -
三 RTC libwebrtc.jar抽取
1 抽取libwebrtc.jar的源码 在RTC各个模块下Android代码webrtc/sdk/android/api/org/webrtc webrtc/sdk/android/src/java/org/webrtc webrtc/base/java/src/org/webrtc webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine webrtc/examples/androidapp 2 ...原创 2021-08-10 16:33:21 · 366 阅读 · 0 评论 -
二 Ubuntu下编译WebRtc-Android
目录一 docker方式二Ubuntu虚拟机方式三 拉取webrtc代码四 编译1、设置编译参数,生成ninja文件2 编译生成.a文件和.so 文件3 编译生成aar五编译错误锦集1 find local lib sudo strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX2 erro No module named 'dataclasses'编译WebRtc代码 谷歌建议在L...原创 2021-08-10 15:45:29 · 756 阅读 · 0 评论 -
一 Mac安装Ubuntu
1 Mac 下Vmware中Ubuntu的安装Vmware中Ubuntu的安装 具体按照步骤请参照:https://www.jianshu.com/p/489ea047caa82 Ubuntu中Vmware 文件共享Vmware Tools是VMware提供的一套非常人性化的程序,可以用来解决虚拟机的分辨率问题,鼠标的性能,以及Ubuntu和宿主机文件的交换问题。必须在虚拟机已经开启且已安装操作系统的前提下才能安装VmMware Tools。它是通过光盘镜像的方式加载到相对应操作系统下来..原创 2021-08-10 15:10:39 · 3385 阅读 · 0 评论 -
音视频传输协议RTP:RTMP: RTCP:SDP:
音视频传输协议RTP: RTP全称是Real- time Transport Protocol(实时传输协议),是在Internet上处理多媒体数据流的传输层协议,利用它能够在一对一(unicast,单播)或者一对多 (multicast,多播)的网络环境中实现传流媒体数据的实时传输。 RTP通常使用UDP协议来实现多媒体的传输;RTMP:Real Time Messaging Protocol(实时消息传送协议协议)是Adobe Systems公司为Flash播放器和服...原创 2020-05-20 10:58:58 · 875 阅读 · 1 评论