- 博客(18)
- 资源 (3)
- 收藏
- 关注
原创 H264 NALU说明
在H.264/AVC视频编码标准中,编码的数据流(位流)由连个层面组成:视频编码层面(VCL)和网络抽象层面(NAL)。H264编码产生的结果(位流)首先为视频编码层(VCL),为了便于网络传输与存储,需要将编码层的VCL数据再打包成NAL(全称Network Abstract Layer),即网络抽象层。其中,前者负责有效表示视频数据的内容,而后者则负责格式化数据并提供头信息,以保证数据适合各种信道和存储介质上的传输。做流媒体研发的工作只需要关心NAL层,不一定需要掌握VCL层数据。一个NAL.
2021-08-29 12:20:30 1972
原创 Visual Studio Code 集成TypeScript开发和调试
假设已经安装nodejs。1、建立项目目录使用以下命令创建项目的目录:mkdir ts3cd ts3mkdir srcmkdir dist建立好的目录如下:ts3├─dist└─src2、初始化NPM在项目的根目录下,执行下面的命令:npm init -y现在项目结构如下:ts3├─dist└─src└─package.json3、安装TypeScript在项目的根目录下,执行下面的命令:npm i -g typescript..
2021-08-28 11:31:44 537
原创 开源免费Webrtc转发服务器Mediasoup的概念解释与基本介绍(一)
用于Webrtc的媒体流转发服务器不计其数,开源与免费的也不计其数,有基于C++开发的,有基于Java开发的,有基于Go开发的,但以笔者的实践经验,mediasoup是性能最好的转发服务器。Mediasoup其实是一个框架,其应用层开发语言为javascript,必须依赖于Nodejs来执行,但其媒体转发模块(Worker)却是用C++开发,而且这个转发模块的网络I/O底层库为Libuv,Libuv是一个目前最优秀的网络I/O库,笔者用它开发了好几款应用,都表现得极其高的性能,所以笔者以为Wo...
2021-08-27 19:27:00 1554
原创 Webrtc 信令交换过程
开发Webrtc程序,首先需要知道其连接的建立过程,现记录如下:1、A向服务器发出init请求2、服务器将A的init请求转发给连接上服务器的其他端3、B收到init请求后,调用peerConnection.createOffer()方法创建一个包含SDP的offer信令4、offer信令创建成功后会调用SdpObserver监听中的onCreateSuccess()响应函数在此处B通过peerConnection.setLocalDescription()方法将SDP赋予自己的Peer
2021-08-27 16:33:18 1039
原创 ES6中export及export default的区别
在JavaScript ES6中,export与export default均可用于输出常量、函数、文件、模块等符号,调用时可以在其它文件或模块中通过import+(常量 | 函数 | 文件 | 模块)名的方式,将其导入,以便能够对其进行使用。export 与 export default究竟有何区别呢?1、一个模块中文件中,export可以有多个,export default仅有一个。function func1() { ... }function func2() { ... }func
2021-08-23 17:57:55 354
原创 Javascript ES6中export与import指令使用说明
javascript ES6 支持模块化编程,模块是独立的文件,该文件内部的所有的变量与函数都是局限在该模块内部,外部模块无法访问,如果需要在调用的模块之内使用这些符号,模块内部的变量与函数必须设置为输出。符号的输出是通过export关键字来制定的。一、export// tools.js//输出变量方式1export var firstName = 'Michael';export var lastName = 'Jackson';export var year = 2021;//输
2021-08-23 17:30:03 2446 1
原创 Android视频采集与处理
Android中很多基本的架构都是C/S层架构,客户端提供调用接口,而实现工作则是在服务端完成。Android Camera的架构也是C/S架构,Client进程虽然不曾拥有任何实质的Camera数据,但是service端为它提供了丰富的接口,它可以轻松的获得Camera数据的地址,然后处理这些数据。两者通过Binder进行通讯。在Android中调用摄像头需要相应的权限,需要注意的是:权限申请在Android 6.0后变成了动态申请。在本项目中使用了Camera1相关的API对摄像头进行调用,所以对Ca
2021-08-23 01:45:29 1417
原创 Android Media API 使用介绍
从事多媒体开发的同学,在对Android 系统开发时,Android系统已经给我们提供了对视音频的强大支持,本文介绍Android的几个和视音频相关的类,通过这几个类的组合使用,其实是能变换出许多视音频处理的相关功能,下面就对这几个类进行简单介绍。MediaMetadataRetriever:用来获取视频的相关信息,例如视频宽高、时长、旋转角度、码率等等。MediaExtractor::视音频分离器,将一些格式的视频分离出视频轨道和音频轨道。MediaCodec:视音频相应的编解码类。MediaMu
2021-08-23 01:14:57 1168
原创 Android 声音采集回声与回声消除
回声(或称回音)是指障碍物对声音的反射。声波在遇到障碍物时,一部分声波会穿过障碍物,而另一部分声波会反射回来形成回声。若障碍物具有坚硬光滑的表面易产生回声;反之,具有柔软的表面则易吸收声音;另外,粗糙的表面易散射声音。回声相比那些直接传播的声音所经过的路程更长,所以会比直接传播的声音晚被听到。如果两列声波的时间间隔小于0.1秒,人耳边无法分辨,只能听到被延长的声音。因为室温(20℃)时空气中的声速是343米每秒,所以站在声源处的人要听到回声需要障碍物到声源的距离至少17米。很多时候直播有连麦的需求,这时
2021-08-23 00:28:01 6944
原创 Vue 中的组件名称命名说明
在使用Vue自定义组件时,需要给组件命名,即在注册一个组件的时候,我们始终需要给它一个名字。比如在全局注册的时候我们已经看到了:Vue.component('my-component-name', { /* ... */ })该组件名就是Vue.component的第一个参数。给予组件的名字可能依赖于打算拿它来做什么。当直接在 DOM 中使用一个组件 (而不是在字符串模板或单文件组件) 的时候,强烈推荐遵循W3C 规范中的自定义组件名 (字母全小写且必须包含一个连字符)。这会...
2021-08-22 12:02:34 4080 1
原创 v-bind,v-on 缩写, 冒号与@
<!-- 完整语法 --><a v-bind:href="url">...</a><!-- 缩写 --><a :href="url">...</a><!-- 动态参数的缩写 (2.6.0+) --><a :[key]="url"> ... </a>v-on缩写<!-- 完整语法 --><a v-on:click="doSomething">...&..
2021-08-22 11:49:15 607
原创 Vue——slot的含义是什么, slot之详细解释
slot 英文的意思是“插槽”的意思,vue用这个词做标签,意思是能够在这个标签里插入一些东西,是由调用组件(父组件)向其调用的子组件里插入一些东西的一个解决办法。slot的语法如下:<slot></slot>以上这段代码是书写在需要支持插入能力的子组件里的,有了这段标签代码后,子组件就支持父组件向其内部插入东西了。一个支持slot的子组件的模板html如下:<template> <div class="slot-child">
2021-08-22 10:31:19 3530
原创 js 三个点(...),扩展运算符说明
在开发nodejs应用时,发现一些代码中符号前面有三个点(...),这个是什么意思了。原来三个点(...)真名叫扩展运算符,是在ES6中新增加的内容,它可以在函数调用/数组构造时,将数组表达式或者string在语法层面展开;还可以在构造字面量对象时将对象表达式按照key-value的方式展开。说白了就是把外层包裹去除,不管是大括号([])、花括号({}),统统不在话下。字面量一般指 [1,2,3,4,5] 或者 {name:'Tom',age:19} 这种简洁的构造方式,多层嵌套的数组和对象三个点就无
2021-08-21 18:10:58 8553
原创 Webrtc 源码分析起步
本文是从Webrtc实际应用的方面介绍如何快速理解Webrtc的源码。Webrtc是用于web的实时通信框架,也可以直接使用Google开源的Webrtc实现来开发非Web的APP。要理解如何使用webrtc的源码,最好是先懂得Webrtc通信的流程,请查看用Webrtc实现免费的1对1高清实时视音频会议系统就可以了解Webrtc的接口使用流程,了解这个流程后就可以快速理解Google开源的那部分Webrtc源码了,并为自己使用。需要掌握Webrtc的js部分的PeerConnection,js部...
2021-08-21 01:06:41 1903
原创 Linux 网络I/O模型epoll开发说明
在进行网络服务器开发时,为了提高服务器支持的连接处理能力,通常采用多线程、select轮询(或者poll函数轮询)来实现,由于多方面的原因,以上方式都不能完美解决大批量连接的问题。在Windows NT系统里,很早就有I/O Complete Port,可以解决网络大批量连接的问题,但在Linux系统,直到内核版本2.5.44时,才开发出一个新的方法来处理大并发连接,这个方法就是epoll,在linux 内核2.6以后,epoll变得成熟,可以大胆使用了。本文就epoll的开发进行介绍说明。概述 ...
2021-08-17 18:30:59 1299
原创 SSL 服务器与客户端样本代码
本文为了方便进行SSL编程参考而整理,SSL编程调用的大多数流程就如如下样本代码,通过本样本代码可以比较快的测试SSL相关API。
2021-08-14 13:53:12 2757
原创 Windows下用OpenSSL生成CA根证书及签发server端证书
一、先下载编译好的OpenSSL程序,并展开后放在E:盘,目录结构如下所示目前放在的目录为:E:\OpensslX64二、打开一个CMD控制台窗口,设置好openssl.cnf路径用以下控制台命令进入到E:\OpensslX64\bin,并设置好openssl.cnf路径。E:cd E:\OpensslX64\binset OPENSSL_CONF=E:\OpensslX64\conf\openssl.cnf三、在当前目录E:\OpensslX64\bin 里创建两个...
2021-08-14 11:11:07 9255
原创 CSS的display:flex说明
在进行网页前端设计时,需要垂直居中显示文本,但CCS似乎没有明确的垂直居中的代码方法,由于目前的页面不再考虑以前的浏览器了,因此采用CSS3的display:flex方法来实现。现记录一下flex属性的相关资料。Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。它即可以应用于容器中,也可以应用于行内元素。(以上说明结合微信开发者工具说明)2009年,W3C提出了
2021-08-11 18:07:33 12825
DXGI屏幕捕捉源码-适合于Windows10 的高效屏幕捕捉源码
2021-09-11
VBWebsocket.zip
2021-03-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人