精华内容
下载资源
问答
  • 从无到有实现音视频通讯

    千次阅读 2021-03-25 14:24:35
    由于从无到有研发音视频成本较高,所以大部分公司选择使用由 anyRTC 提供的 RTC SDK 进行开发,以求产品 可以快速上线,并且稳定运行。 anyRTC 提供 web,微信小程序,flutter,ios, android,windows 等平台的 RTC...

    由于近年国内外疫情肆虐,全国中小学都开始实行网上授课,很多公司也纷纷推出一些音视频通讯类的产品,由于从无到有研发音视频成本较高,所以大部分公司选择使用由 anyRTC 提供的 RTC SDK 进行开发,以求产品可以快速上线,并且稳定运行。

    anyRTC 提供 web,微信小程序,flutter,ios, android,windows 等平台的 RTC SDK,本文将以 web端为例,从无到有实现一个基础的音视频通讯demo;

    开发前提条件

    • 一个有效的 开发者账号

    • 一款支持 RTC SDK 的主流浏览器:

    • 一台拥有音视频输入输出设备(麦克风,摄像头)的终端

    下载 SDK

    • 官网下载中心找到 「RTC SDK 下载」 的 Web 端

    • 前往阿里云 OSSctrl + scommand + s 下载

    • 前往 github cloneDownload ZIP 下载

    • 通过 npm 市场下载

    导入 SDK

    • script 标签引入

      使用 <script> 标签引入的 SDK ,window 对象中会暴露一个 ArRTC 的全局变量。

    <script src="/<YOUR_PATH>/to/ArRTC@latest.js"></script>
    
    
    • ES6 方式引入
    import ArRTC from '/<YOUR_PATH>/to/ArRTC@latest.js';
    
    
    • CommonJS 方式引入
    var ArRTC = require('/<YOUR_PATH>/to/ArRTC@latest.js');
    
    
    • npm 方式引入
    import ArRTC from 'ar-rtc-sdk';
    
    

    操作流程

    初始化客户端

    通过 ArRTC.createClient 创建本地客户端 rtcClient 的实例。

    const rtcClient = ArRTC.createClient({ mode: "live", codec: "h264" });
    

    加入频道

    调用 rtcClient.join 方法加入频道,join 方法需要传入以下四个参数:

    • appid:anyRTC 控制台获取的 App ID。

    • channel:通话的频道名称。

    • token:用于 Token 鉴权,提供应用信息的安全级别。

    • uid: 用来标识用户身份,无缝对接业务系统。必须为字符串,不可超过 64 字节,但是不支持字符串 “null”。

    rtcClient.join(appid, channel, token, uid).then((uid) => { 
        // 加入成功 可以在这里面开始监听各类事件
    });
    

    监听远端用户加入频道

    远端用户加入频道会触发 user-joined 回调。

    rtcClient.on("user-joined", (user) => {
    	// 处理逻辑
    });
    

    监听远端用户发布音视频流

    远端用户发布音视频流会触发 user-published 回调。可在此回调中订阅远端用户的音视频流。

    rtcClient.on("user-published", (user, mediaType) => {
     	await rtcClient.subscribe(user, mediaType); // 订阅远端用户的音视频轨道
     	if (mediaType === 'video') {
      		user.videoTrack.play("<ELEMENT_ID>"); // 播放远端视频到指定窗口
     	} else if (mediaType === 'audio') {
      		user.audioTrack.play(); // 播放远端音频
     	}
    });
    

    创建本地音频轨道

    该方法枚举可用的音频输入设备,比如麦克风。

    注意:调用本方法浏览器会弹出设备授权窗口,由于浏览器安全策略的限制,该操作仅支持在 localhost127.0.0.1 或者安全的 HTTPS 环境下进行。

    const audioTrack = await ArRTC.createMicrophoneAudioTrack();
    

    创建本地视频轨道

    该方法枚举可用的视频输入设备,比如摄像头。

    注意:调用本方法浏览器会弹出设备授权窗口,由于浏览器安全策略的限制,仅支持 localhost127.0.0.1 或者安全的 https 环境下进行该操作。

    const videoTrack = await ArRTC.createCameraVideoTrack();
    

    发送本地音视频轨道

    将本地音视频轨道发布至频道中,发布音视频轨道之后,远端会收到 user-published 回调。

    rtcClient.publish([videoTrack, audioTrack]);
    

    退出频道

    调用该方法离开频道。

    注意:离开频道需要自行释放本地创建的轨道。否则摄像头和麦克风会处于工作的状态,例如:摄像头灯常亮。

    rtcClient.leave();
    // 释放音视频采集设备
    videoTrack && videoTrack.close();
    audioTrack && audioTrack.close();
    

    效果展示

    展开全文
  • 从无到有构建angular1框架

    千次阅读 2017-03-08 10:49:14
    既然是从无到有构建angular1 的框架,就要首先从angular的基本知识说起,本文将从以下几个方面介绍: Angularjs 技术框架 指令集 Service、Route Application由于angular1和angular2是完全不同的两个框架,angular...

    既然是从无到有构建angular1 的框架,就要首先从angular的基本知识说起,本文将从以下几个方面介绍:

    1. Angularjs 技术框架
    2. 指令集
    3. Service、Route
    4. Application

      由于angular1和angular2是完全不同的两个框架,angular2在性能提升等方面都做了很多改进,有想了解ng2朋友可以查看博客:从无到有构建Angular2 后台管理系统的前端架构博客中提供了源码地址可以直接下载运行。

    一、Angularjs 技术框架

    1、Angular.js 概述

    • 致力于Single Page Application (SPA)
    • 易于构建页面的CURD操作,以数据为中心
    • 操作思路与Dom及jQuery的先查找元素再操作元素不 同,它一切以数据为中心

    2、四大特性

    2.1 MVC

      1.1.1 MVC介绍
    
               Model:模型,业务数据,存储于特定作用范围内变量
                      controller中声明模型数据,可以实现module与view的分离
               VIEW:   视图,HTML+directive
               Controller:控制器
     1.1.2 MVC步骤
               1、声明自定义模块
                   angular.module('模块名',[依赖列表])
               2、把自定义的模块注册给当前的应用
                   ng-app='模块'
               3、模块中声明控制器函数
                   module.controller('控制器名',function(){...})
               4、调用控制器函数、创建控制器对象
                   <div controller='控制器名'></div>
               5、在控制器中增删改查数据
                   $scope.a=b;
               6、在View中呈现数据
                   {{a}}
    

    2.2 数据双向绑定

    digest循环以及dirty-checking,包括watch,digest,和$apply
    1.每次你绑定一些东西到你的UI上时你就会往$watch队列里插入一条$watch$watch就是那个可以检测model变化的东西。
    2.当浏览器接收到事件时,Angular使用$apply将事件添加到angular context(事件循环机制)中
    3.digest循环就会触发。digest将会遍历我们的$watch,然后询问它是否有属性和值的变化,直$watch队列都检查过。

    Angular 在启动时会给所有的异步交互点打补丁:

    • 超时
    • Ajax 请求
    • 浏览器事件
    • Websockets,等等

    在那些交互点,Angular 会对 scope 对象进行变动检查,如果发现有变动就激发相应的监视器重新运行变动检查,检查是否有更多的变化发生,重新运行监视器,等等
    Angular 1 绑定运行的后果:
    结果是 DOM 一直同简单 Javascript 对象进行同步,尽管这样可以工作,但是这使得有时难以进行推论:
    - 不清楚哪些监视器会运行,什么顺序,多少次
    - 模型更新顺序难以推论和预期
    - 摘要循环多次运行导致时间消耗

    2.3 依赖注入

    angular.module(‘myApp’, []) 
    .controller(‘Ctl’, function ($scope) { 
        $scope.name = ‘leonwgc’;
    }); 
    上面这段代码就用到了angular的依赖注入,代码首先创建了一个myApp模块,然后在此模块中创建了Ctl控制器,创建控制器函数的第二个参数则是控制器的构造函数, 构造函数声明了对$scope$log服务的依赖。 当构造函数执行时, 即可获得$scope$log服务实例,进行操作。

    依赖注入有三步:

    1. 得到模块依赖项
    2. 查找依赖项对应的对象
    3. 执行时注入

    2.4 模块化设计

    Angular.module(name,[,requires])
    ng–app = “name”
    1.作用:
    定义一个应用程序
    模块是应用程序中不同部分的容器
    模块是应用控制器的容器,控制器必须属于一个模块
    
    2、优点
    保持全局命名空间整洁
    使应用可以按照任意顺序加载代码

    二、指令集

    • 内置Directive
    • 自定义Directive
    • 内置filter
    • 自定义filter

    1 内置Directive

    最常用的内置Directive有:(更多查看官网)

    1、ng-bind
    2、ng-repeat
    3、ng-if
    4、ng-class
    5、ng-click

    具体使用请查看示例代码

    2 自定义Directive

    属性:
    1、restrict:“EACM”
           E:元素  <my-directive></my-directive>
           A:属性  <div my-directive></div>
           C:类    <div class=“my-directive”></div>
           M:注释<!– directive: my-directive -- >
    2、template
    3、templateUrl

    具体使用请查看示例代码

    3 内置filter

    1number
    2、currency
    3date
    4、uppercase
    5、lowercase
    6filter
    7、json
    8、limitTo

    具体使用请查看示例代码

    4 自定义filter

    示例:
    app.filter('toFixedTwo', function () {
    return function (text) {
        if(!text){
            return "0.00";
        }else{
            var data = parseFloat(text);
            return data.toFixed(2);
        }
    }

    具体使用请查看示例代码

    三、路由

    请查看示例代码

    1 ngRoute 和 ui-route 相比:

    $when>   $state          路由状态配置的时候           
    $routeParams>  $stateParams     带参数的时候的配置$routeProvider>  $stateProvider   依赖注入的模块
    <div ng-view></div>>  <div ui-view></div> 页面中绑定的指令

    2 路由详解
    uiRoute中可以嵌套更深层次的路由,也就是路由中可以有路由(大致有两种情况:1.横向的 2.纵向的)。
    (1)嵌套路由
    (2) 多视图路由
    ngRoute中就不能嵌套更深的路由。

    四、angular1 application

    请查看示例代码

    展开全文
  • 从无到有构建大型电商微服务架构一二三阶段无密最完整版本 QQ:2500680996

    从无到有构建大型电商微服务架构一二三阶段无密最完整版本在这里插入图片描述

    QQ:2500680996

    展开全文
  • IDEA 如何创建 SSM 项目,从无到有

    千次阅读 多人点赞 2020-03-16 22:58:17
    从无到有创建 SSM 项目1. 创建一个 maven 项目2. 添加配置文件2.1 修改 pom.xml 将当前项目修改为 war 包2.2 添加 webapp 目录 1. 创建一个 maven 项目 这里直接选择 maven 项目进行创建,任何选项都不用选择,直接...

    流量如水,文章就是一个瓶子,标题是瓶口,内容是瓶身。 瓶子装水有多快依赖瓶口大小,瓶子装水有多少依赖瓶身大小。

    1. 创建一个 maven 项目

    • 这里直接选择 maven 项目进行创建,任何选项都不用选择,直接创建项目即可。
    • 创建完成后,进入到项目点击 Enable Auto-import
      在这里插入图片描述

    2. 创建 web.xml 文件

    2.1 修改 pom.xml 将当前项目修改为 war 包

    在这里插入图片描述

    2.2 添加 webapp 目录

    选中当前项目 F12 打开如下图窗口:选中项目下 Web 文件夹,单击 Web Resource Directory 创建 webapp 目录。
    在这里插入图片描述
    这里不用修改任何任何选项,单击OK,
    在这里插入图片描述

    2.3 在 webapp 目录下创建 web.xml 文件

    在这里插入图片描述

    • 这一步修改 web.xml 文件的创建位置,复制选中的这块目录 \WEB-INF\web.xml
      在这里插入图片描述
    • 将位置修改到创建的 webapp 目录下
      在这里插入图片描述
    • 创建成功
      在这里插入图片描述

    3. 添加依赖

    在这里插入图片描述

    4. 创建 Spring 和 SpringMVC 配置文件

    • 在 resource 下创建 Spring 和 SpringMVC 配置文件
      在这里插入图片描述
      在这里插入图片描述

    5. 在 Spring 和 SpringMVC 的配置文件中添加要扫描的包

    • use-default-filters=true 代表 org.sang 下所有的包都扫描
    • <context:exclude-filter type=“annotation” expression=“org.springframework.stereotype.Controller”/> 代表 controller 不被扫描
      在这里插入图片描述
    • SpringMVC 中的配置文件与之相反
    • use-default-filters=“false” 代表 org.sang 下所有的包都不进行扫描
    • <context:include-filter type=“annotation” expression=“org.springframework.stereotype.Controller”/> 代表只有 controller 被扫描
      在这里插入图片描述

    6. 在 web.xml 加载 Spring 和 SpringMVC 的配置

    在这里插入图片描述

    7. 创建 Controller 进行测试

    • Controller 代码如下:
    package org.sang.controller;
    
    import org.sang.service.HelloService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class HelloController {
        @Autowired
        HelloService helloService;
    
        @GetMapping(value = "/hello",produces = "text/html;charset=utf-8")
        public String hello() {
            return helloService.sayHello();
        }
    }
    
    
    • service 代码如下:
    package org.sang.service;
    
    import org.springframework.stereotype.Service;
    
    @Service
    public class HelloService {
    
        public String sayHello() {
            return "hello 我来学习SSM框架了!";
        }
    }
    
    
    • 在 idea 中添加 tomcat 进行测试
    • 选择右上角的 Add Configuration 添加 Tomcat
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    • 启动 Tomcat 项目访问 /hello 接口测试结果如下图:
    • 如何你的 tomcat 启动过程中遇到乱码问题,看这篇就可以解决 tomcat 运行过程中发生乱码如何解决
      在这里插入图片描述
    展开全文
  • 架构篇 -- 项目从无到有步骤

    千次阅读 2018-09-19 13:51:05
    架构项目从无到有步骤 当自己独立负责一个项目时,需要将从无到有进行搭建,可能之前没有接触过的东西会感觉到有点着急,但是所有的技术不一定会全部掌握,面对没有接触的方向,可以按照一下的步骤进行实现。 1. ...
  • 微信demo小游戏:飞机大战从无到有

    千次阅读 2019-06-09 11:31:47
    微信demo游戏飞机大战从无到有 现在创建新项目会默认给飞机大战的demo,这里给大家从基础开始讲解游戏的从无到有是怎么实现的。 具体实现步骤: 创建背景图->背景图运动起来->创建飞机并随背景图一起动...
  • Unity3D投篮游戏项目开发从无到有

    千次阅读 2019-01-10 01:29:58
    这是龚老师的实战视频教程。里面包含了视频和项目源代码。视频清晰,讲述了一个项目从无到有的过程。你值得拥有!
  • 人工智能学会从无到有设计药物

    千次阅读 2018-08-15 16:31:05
    美国北卡莱罗纳大学的科研人员开发出一款人工智能系统,可以从无到有地学会如何设计药物,有望极大加速新药设计过程。该系统被称为结构进化的强化学习,简称为ReLeaSE,它是一...
  • 一个产品从无到有的过程可以分为两个阶段:产品设计阶段和产品执行阶段。 第一阶段:产品设计阶段 不同的书对产品设计阶段的工作分类不同,但本质其实都是一样的。本文从其中一个角度来切入 -- 行内经典入门...
  • 个人小破网站从无到有的过程python-flask-mysql

    千次阅读 多人点赞 2020-05-08 18:29:02
    先看下效果,UI有些简陋,内容有些low,不过网站是从无到有了,功能目的会以后学习再修改! 开发我就不介绍了,我也是才开始学flask建站的,就简单记录下过程。 域名解析 就是将域名指向服务器IP,我是在阿里云买的...
  • 观察者设计模式从无到有

    千次阅读 2016-04-06 14:49:34
    ②此篇博文是分析观察者设计模式的从无到有。其中有四个版本的代码的演进,另外还包括java jdk提供的Obsevable.java 和Obsever.java的使用的一个版本以及对其源码的简单分析。 ③如果只想使用ava jdk的观察者api,...
  • 从无到有玩NodeMcu:web端控制 我们的目标: 利用网页web端为搭载NodeMcu的esp8266连接wifi 硬件准备: 基于NodeMcu的esp8266 数据线:usb+micr-usb 安装有Windows系统的电脑 软件准备: java运行...
  • Java 环境搭建 —— Git 从无到有

    千次阅读 2016-12-10 10:59:19
    Java 环境搭建 —— Git 从无到有下载 GitWindows 操作系统下载 Git-2.11.0-64-bit.exe,然后下一步下一步就可以了。 安装过程中的那些选项可以使用默认的,个人觉得没有什么很实质的差别。配置个人信息配置完个人...
  • 今天这篇文章要介绍的是一个酷炫的进度条的设计和实现,在进度的文字内容、颜色以及切换的...那么下面我们就开始从无到有实现一下这个酷炫的进度效果吧。 项目地址:SpecialProgressBar。实现思路仔细观察下这个效果,
  • 团队管理对于People manager 而言是仁者见仁智者见智。经过多年的带队工作,我总结出一些经验和教训。一个公司聘用一个经理,他的目的很简单也很明确... 一个团队从无到有再到一个高效的团队通常需要经历4个主要的阶段
  • 从无到有:软件项目过程敏捷实践

    千次阅读 2016-04-20 20:56:59
    通过本次消息中间件系统的全程参与,对于软件项目从无到有的生产过程有了较深入的了解,尤其对于架构设计的决策过程和依据,有了全面的认识。整个项目过程从无到有依次可以分解为九个过程,下面一一道来。 (一)...
  • 从无到有构建大型电商微服务架构(全套) 链接:https://pan.baidu.com/s/1XLovHHe7OtAeI3wPAA572g 提取码:vwkf 复制这段内容后打开百度网盘手机App,操作更方便哦
  • 从如何实现按键/LED的操作,到现在接触到的 BT / WIFI / Audio 等模块,工作中的调试总是解决各种Bug, 并没有对系统整体的一个掌握,直到2018年下半年的时候,在公司的项目中经历了系统从无到有的搭建,发现自己有很...
  • 从无到有,发布一个你自己的npm package
  • 5分钟快速从无到有建立Ethereum联盟链 开发Ethereum Dapp的过程中,需要一个测试用的chain,之前是使用testrpc或直接连到Ethereum testnet (Ropsten),不过testrpc有各种坑需要处理,而Ropsten testnet则是需要同步...
  • QT中MySql数据库从无到有创建过程

    千次阅读 2017-10-09 21:20:04
    QT中MySql数据库从无到有创建过程1、在Qt中,首先要创建数据库连接、数据库、数据表,搭建一个可用的MySQL数据库平台,其他的插入数据、删除数据、查询等操作使用sql语句执行;2、创建数据库连接。数据库连接名在...
  • QT中MySql数据库应用从无到有创建过程 1、在Qt中,首先要创建数据库连接、数据库、数据表,搭建一个可用的MySQL数据库平台,其他的插入数据、删除数据、查询等操作使用sql语句执行; 2、创建数据库连接。数据库...
  • 破洛洛文章简介:如图所示,一个产品从无到有主要经历了:项目前期准备,项目规划,市场校验,产品发布,四个阶段.  在>一文中,和大家分享了“我心目中一个产品项目标准的执行套路与方法”,但是依据...
  • 从无到有——制作简易编译器(一) 编译原理是计算机专业大三或者大四的必修课程之一,许多学员都会对学生提出硬性或者软性的制作简易编译器的要求。许多学生手足无措,别急,学长也是过来人,看完这个教程,保证你...
  • 从无到有2011.1.21 微信正式发布。这一天距离微信项目启动日约为2个月。就在这2个月里,微信从无到有,大家可能会好奇这期间微信后台做的最重要的事情是什么?我想应该是以下三件事:1. 确定了微信的消息模型微信...
  • Intellij IDEA从无到有创建web项目:Intellij虽然提供了很多模板可以创建maven web javaee等等各种项目,但是你知道项目从无到有到底怎么来的,各个配置分别是干啥的?现在就来一步步搞出来。1、idea打开一个空...
  • 如果该值大于4,如果客户端时间/资源,请尝试将其减小4或更小。 尝试1开始,然后那里开始递增以找到最佳性能。 session_timeout_ms选项设置相关的超时。 将其设置为一个值,以确保max_poll_records中的...
  • 近日,云账户创始人杨晖受邀作为极北学院的导师,在极北咖啡世贸天阶店为学员们进行《企业从无到有,谈谈创业时代的创业者思维》的主题分享,并与学院们互动交流。那么,云账户究竟是如何从无到有的呢?【干货分享】...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,283
精华内容 12,913
关键字:

从无到有