自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(340)
  • 收藏
  • 关注

原创 Linux平台编译WebRTC

Linux平台编译WebRTC

2024-03-01 18:12:46 504

原创 Ubuntu/Docker环境下调试mediasoup-demo

1. Ubuntu环境下调试mediasoup-demo2. Docker环境下调试mediasoup-demo

2023-03-01 17:51:51 764 1

原创 mediasoup-demo server源码分析

1. mediasoup-demo是什么?2. mediasoup-demo代码结构3. mediasoup-demo server代码分析 1. config.js代码解析 2. server.js主要逻辑 3. Room.js具体代码解析

2023-03-01 14:04:48 794

原创 mediasoup基本介绍及Ubuntu/Docker环境下部署mediasoup

mediasoup基本介绍Ubuntu环境mediasoup-demo安装部署Docker环境mediasoup-demo安装部署

2023-02-24 16:19:55 2372

原创 WebRTC通话原理

1. 前言当两个不同网络环境的(具备摄像头/麦克风多媒体设备的)浏览器,要实现点对点的实时音视频对话需要进行:媒体协商网络协商2. 目录媒体协商SDP网络协商NAT是什么?NAT穿透又是什么?

2023-02-06 17:59:53 590

原创 WebRTC:Mesh/MCU/SFU网络架构

1. WebRTC网络架构有Mesh、MCU,SFU三种,其中: 1. Mesh:成本最低,但没有对多人实时互动场景提供很好的支持。 2. MCU:支持多人实时互动,需要对音视频流进行重新解码、混流、编码、对服务器要求高,成本以及延时也是最高。 3. SFU:支持多人实时互动,不需要在服务器端对媒体流进行编解码,因此降低了对服务器的要求,延时也低。

2023-02-02 18:26:34 2952 3

原创 网络编程——socket定义和地址格式

1. socket 是什么?2. 套接字地址格式

2022-11-22 11:11:39 1215

原创 Docker环境安装OWT Server[Open WebRTC Toolkit]

目录Docker环境安装OWT ServerDocker自定义开发OWT Server

2022-11-15 16:02:19 1204

原创 OWT Server进程结构和JS代码处理流程 [Open WebRTC Toolkit]

OWT Server进程结构和JS代码处理流程 [Open WebRTC Toolkit]

2022-11-11 20:03:52 1100

原创 OWT Server信令分析 (下) [Open WebRTC Toolkit]

OWT Server信令分析 (下) [Open WebRTC Toolkit]

2022-11-10 15:50:23 832

原创 OWT Server信令分析 (上) [Open WebRTC Toolkit]

1. OWT Server信令分析2. OWT Server信令交互过程解析

2022-11-04 18:44:21 892

原创 OWT Server整体架构分析 [Open WebRTC Toolkit]

1. OWT Server架构

2022-11-04 18:37:11 1831 5

原创 RTMP握手协议及lal RTMP握手实现解析

RTMP握手协议及lal RTMP握手实现解析

2022-10-19 14:03:59 657

原创 设计模式——模板模式

1. 模式定义和使用场景2. 模式结构3. 模板模式优点?4. 模板模式缺点?5. 模板模式代码实现

2022-10-11 14:05:52 340

原创 设计模式——策略模式

1. 模式定义和使用场景2. 模式结构3. 策略模式优点?4. 策略模式缺点?5. 策略模式代码实现

2022-10-11 14:00:51 397

原创 设计模式——观察者模式

1. 模式定义和使用场景2. 模式结构3. 观察者模式优点?4. 观察者模式缺点?5. 观察者模式代码实现

2022-10-11 13:55:04 334

原创 设计模式——装饰器模式

1. 模式定义和使用场景2. 模式结构3. 装饰器模式优点?4. 装饰器模式缺点?5. 装饰器模式代码实现

2022-10-11 11:25:20 336

原创 设计模式——代理模式

1. 模式定义和使用场景2. 模式结构3. 代理模式优点?4. 代理模式缺点?5. 代理模式代码实现

2022-10-11 11:18:38 229

原创 设计模式——工厂模式

1. 简单工厂2. 工厂方法3. 抽象工厂

2022-10-11 11:08:55 347

原创 设计模式——单例模式

1. 为什么要使用单例?使用场景?2. 模式结构3. 单例模式优点?4. 单例模式缺点?5. 单例模式代码实现

2022-10-11 09:48:04 190

原创 WebRTC音视频采集和播放示例及MediaStream媒体流解析

目录1. 示例代码——同时打开摄像头和麦克风,并在页面显示画面和播放捕获的声音2. API解析 1. mediaDevices 2. MediaStream媒体流

2022-06-28 17:36:24 2629 1

原创 Ubuntu环境安装OWT Server[Open WebRTC Toolkit]

Ubuntu环境下安装OWT Server目录OWT (Open WebRTC Toolkit) 介绍OWT (Open WebRTC Toolkit) 编译和安装1. OWT (Open WebRTC Toolkit) 介绍OWT媒体服务器提供了一种基于WebRTC的高效的视频会议和流媒体服务,将单个WebRTC流扩展到多个端点,同时支持媒体流的媒体分析功能。特点:a. 分布式、可扩展、可靠的SFU + MCU服务器。b. 基于Intel Co

2022-06-28 15:06:39 3863 4

原创 SRS流媒体服务器——SRS4.0 WebRTC⼀对⼀通话环境搭建与逻辑分析

SRS流媒体服务器——WebRTC⼀对⼀通话目录SRS4.0 WebRTC⼀对⼀通话概述环境搭建1. SRS4.0 WebRTC⼀对⼀通话概述SRS负责媒体能⼒,外置信令服务器负责房间管理。官⽅⽂档参考:https://github.com/ossrs/srs/wiki/v4_CN_WebRTC#sfu-one-to-onesignaling(信令)和httpx-static(web访问)这两个项⽬,代码都放在了SRS的3rdparty⽬录,不依赖⽹络就可以编译,但依赖Go环境。

2022-05-02 17:37:29 3738

原创 SRS流媒体服务器——服务器给RTMP拉流端转发数据

SRS流媒体服务器——服务器给RTMP拉流端转发数据目录1. 服务器给RTMP拉流端转发数据RTMP推流、拉流创建连接说到,SrsRtmpServer::identify_client会判断推流还是拉流,如果是拉流则会进入SrsRtmpConn::playing。SrsRtmpConn::playing会创建SrsLiveConsumer,并添加到SrsLiveSource对象下的保存SrsLiveConsumer的consumers(vector)中。这样推流时就可以遍历consu

2022-04-17 16:08:18 832 1

原创 SRS流媒体服务器——服务器读取RTMP推流数据

SRS流媒体服务器——服务器读取RTMP推流数据目录处理RTMP推流video数据处理RTMP推流audio数据处理RTMP推流请按照此顺序阅读SRS流媒体服务器——RTMP端⼝监听逻辑分析SRS流媒体服务器——RTMP推流、拉流创建连接1. 服务器读取RTMP推流数据RTMP推流、拉流创建连接说到,SrsRtmpConn::publishing会创建SrsPublishRecvThread协程来接收数据,然后在SrsRtmpConn::do_publishing开启接收

2022-04-16 22:49:49 606

原创 SRS流媒体服务器——RTMP推流、拉流创建连接

SRS流媒体服务器——RTMP推流、拉流创建连接目录识别客户端,然后获取或者创建SrsLiveSource启动推流启动拉流请按照此顺序阅读SRS流媒体服务器——RTMP端⼝监听逻辑分析1. RTMP推流、拉流创建连接RTMP推流和拉流创建连接对象的⽅式都是创建了SrsRtmpConn,见上面SrsServer::fd_to_resource函数。每个SrsRtmpConn都绑定⼀个SrsCoroutine,具体的业务处理在SrsCoroutine的循环进⾏,对于RTMP⽽⾔

2022-04-16 14:30:41 2001

原创 SRS流媒体服务器——RTMP端⼝监听逻辑分析

SRS流媒体服务器——RTMP端⼝监听逻辑分析目录listen监听端口accept接收⼀个套接字中已建⽴的连接new SrsRtmpConn新建⼀个连接对象1. RTMP端⼝监听逻辑RTMP基于TCP连接,需要进行:listen监听端口。accept接收⼀个套接字中已建⽴的连接。new⼀个RTMP连接对象关联accept得到的fd。1. listen监听端口srs配置文件为:listen 1935;max_connections

2022-04-16 14:25:48 703

原创 SRS流媒体服务器——WebRTC推拉流演示

SRS流媒体服务器——WebRTC推拉流目录WebRTC推拉流配置WebRTC拉流演示WebRTC推流演示SRS官方WebRTC文档:https://github.com/ossrs/srs/wiki/v4_CN_WebRTC#rtmp-to-rtc1. WebRTC推拉流配置webrtc是默认⽀持的(–rtc=on),使⽤默认的rtc配置(conf/rtc2rtmp.conf)就可以运行。默认rtc2rtmp.conf配置如下:listen 19

2022-04-14 18:09:53 13205 14

原创 Flv解复用代码解析

FLV解复用-FlvParser源码阅读目录总体流程main函数处理函数process解析函数FLV相关数据结构CFlvParser表示FLV解析器FlvHeader表示FLV的头部标签标签头部标签数据script类型的标签音频标签视频标签解析FLV头部入口函数FLV头部解析函数解析头部标签标签的解析过程解析标签头部的函数解析视频标签入口函数CreateTag创建视频标签解析视频标签解析视频配置信息解析视频数据自定义

2022-03-17 19:32:06 30092 4

原创 Cmake的CMakeLists.txt写法示例

Cmake的CMakeLists.txt写法示例目录示例一:单文件示例二:多个源文件示例三:将hello.c生成一个库来调用示例四:工程分类文件夹编译示例五:Cmake的install使用示例一:单文件文件名字为main.cpp,内容如下:#include <iostream>int main() { printf("Hello World!\n"); return 0;}CMakeLists.txt文件内容如下,其中:a. cmake_m

2022-03-14 19:37:54 2398

原创 SRS流媒体服务器——基本流程简单分析

SRS流媒体服务器——基本流程分析目录main()、domain()和run_master()SrsServer::listen()SrsServer::listen_rtmp()SrsBufferListener::listen()、SrsTcpListener::listen()SrsTcpListener::cycle()SrsBufferListener::on_tcp_client()SrsServer::accept_client()、SrsServer::fd2conn()

2022-01-27 19:50:46 1768

原创 SRS流媒体服务器——Edge集群搭建

SRS流媒体服务器——Edge集群搭建目录edge原理dege配置1. edge原理SRS的Edge主要解决⼏条流有⼤量播放请求的场景,⽐如⼀个流有上万⼈观看。SRS的Edge能对接所有的标准RTMP源站服务器。Edge⼀般负载⾼,SRS⽀持的并发⾜够跑满千兆⽹带宽了。Edge的主要应⽤场景:CDN/VDN⼤规模集群,客户众多流众多需要按需回源。⼩规模集群,但是流⽐较多,需要按需回源。⻣⼲带宽低,边缘服务器强悍,可以使⽤多层edge,降低上层BGP带宽。

2022-01-26 16:45:18 2548

原创 SRS流媒体服务器——Forward集群搭建和源码分析

SRS流媒体服务器——Forward集群搭建和源码分析目录Forward集群原理RTMP流转发(Forward)部署实例Forward集群源码分析1. Forward集群原理Forward 表示向前、前头的、发送等意思。在SRS中可以理解为把Master节点获得直播流⼴播(转发)给所有的Slave节点,master节点由多少路直播流,那么在每个slave节点也会多少路直播流。注:在SRS中还有另外⼀种集群⽅式,edge⽅式。注意两种⽅式的⽤词不同。a. 在Forward模式中,中⼼节

2022-01-25 17:47:59 1834

原创 SRS流媒体服务器——单机环境搭建和源码目录介绍

SRS流媒体服务器——环境搭建和源码目录介绍1. 目录环境搭建源码目录介绍1. 环境搭建srs官⽹:https://github.com/ossrs/srs码云的源速度快:https://gitee.com/winlinvip/srs.oschina.gitgithub的源速度慢:https://github.com/ossrs/srs.git1. 获取SRSgit clone https://gitee.com/winlinvip/srs.oschina.git srs.3.

2022-01-17 21:14:44 3814

原创 Janus流媒体服务器信令分析

Janus流媒体服务器信令分析目录video room文档:https://janus.conf.meetecho.com/docs/videoroom.html1. 房间配置文件room-<unique room ID>: { # 房间描述 description = This is my awesome room # 是否是私有房间,当提出“list”请求时,私人房间不会出现 is_private = true|false (p

2021-12-30 12:57:55 847

原创 Janus流媒体服务器框架分析

Janus流媒体服务器框架分析目录webrtc多方通信架构Janus流媒体服务器1. webrtc多方通信架构1. Mesh 方案Mesh方案即多个终端之间两两进行连接,形成一个网状结构。比如 A、B、C 三个终端进行多对多通信,当 A 想要共享它的音视频流时,它需要分别向 B 和 C 发送数据。当B想要共享媒体,就需要分别向 A、C 发送数据,依次类推。Mesh方案对各终端的带宽要求比较高。优点:不需要服务器中转数据,STUN/TUTN 只是负责 NAT 穿越,利用现有 W

2021-12-28 10:57:37 2785

原创 Ubuntu下搭建Janus Server

Ubuntu下搭建Janus Server目录Janus简介1. Janus简介Janus 是一个开源的,通过 C 语言实现了对 WebRTC 支持的 Gateway。Janus 自身实现得很简单,提供插件机制来支持不同的业务逻辑,配合官方自带插件就可以用来实现高效的 Media Server 服务。本博客在 Ubuntu下搭建 Janus 服务器,实现 janus 官方 Demo 浏览器与 Android APP Demo(janus-gateway-android)之间的音视频通话

2021-12-28 10:33:38 4086 3

原创 C/C++学习之路: STL

C/C++学习之路: STL目录STL概述STL三大组件常用容器1. STL概述STL(Standard Template Library,标准模板库),主要出现在 c++中,但是在引入 c++之前该技术已经存在很长时间了。STL 从广义上分为: 容器(container) ,算法(algorithm) 和迭代器(iterator),容器和算法之间通过迭代器进行无缝连接。STL 几乎所有的代码都采用了模板类或者模板函数,这相比传统的由函数和类组成的库来说提供了更好的代码重用机会。

2021-12-27 15:08:54 149

原创 C/C++学习之路: 模板和异常

C/C++学习之路: 模板和异常目录模板类型转换异常输入和输出流1. 模板1. 模板概述c++提供了函数模板(function template),函数模板实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来代表,这个通用函数就成为函数模板。凡是函数体相同的函数都可以用这个模板代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现不同函数的功能。c++提供两种模板机制:函数模板和类模板

2021-12-23 21:09:25 192

原创 C/C++学习之路: 多态

C/C++学习之路: 多态目录多态基本概念向上类型转换及问题如何实现动态绑定抽象基类和纯虚函数纯虚函数和多继承虚析构函数重写,重载,重定义1. 多态基本概念多态是面向对象程序设计语言中数据抽象和继承之外的第三个基本特征。多态性(polymorphism)提供接口与具体实现之间的另一层隔离。多态性改善了代码的可读性和组织性,同时也使创建的程序具有可扩展性,项目不仅在最初创建时期可以扩展,而且当项目在需要有新的功能时也能扩展。c++支持编译时多态(静态多态)和运行时多态(动态

2021-12-21 18:50:49 98

空空如也

空空如也

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

TA关注的人

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