
音视频开发
嫩草终结者
一个渴望成为大牛的小程序猿
展开
-
jitsi性能测试结果
环境: 基于官网搭建的jitsi,包括jitsi-videobridge、jicofo、nginx、tigase(原版是prosody,这里替换成了tigase)。服务器是8核32G。测试一:多个客户端进入同一个房间。每个客户端既向上发送数据,也向下接收数据,接收数据时会接收多条流。测试二:客户端进入不同的房间。每个客户端既向上发送数据,也向下接收数据,接收数据时会接收多条流。测试三:客户端进入不同的房间。每个客户端仅发送数据,或者接收数据,发送或者接...原创 2020-11-08 17:02:46 · 2369 阅读 · 3 评论 -
webrtc QOS方法(汇总篇)
目前总结出webrtc用于提升QOS的方法有:NACK、FEC、SVC、JitterBuffer、IDR Request、PACER、Sender Side BWE、VFR(动态帧率调整策略)。这几种方法在webrtc架构分布如下:具体实现原理如下:一、NACK与NACK对应的是ACK,ACK是到达通知技术。以TCP为例,他可靠因为接收方在收到数据后会给发送方返回一个“已收到数据”的消息(ACK),告诉发送方“我已经收到了”,确保消息的可靠。NACK也是一种通知技术,只是触发通.转载 2020-07-14 16:07:59 · 700 阅读 · 0 评论 -
音视频Qos方案
丢包重传: 当接收方发生丢包,如果丢包的时刻 T1 + rtt_var< 接收方当前的时刻 T2,就认为是丢包了,这个时候就会把所有满足这个条件丢失的报文 ID 构建一个NACK反馈给发送方,发送方收到这个反馈根据 ID 到重发窗口缓冲区中查找对应的报文重发即可。服务器端直到缓冲区里的包都未丢包时,才写入文件,APP端同理。该方法的缺点是增大了端到端的延迟,尤其在丢包大量发生时更为明显(嵌入式端影响不大)。前向纠错FEC ,该方法的优点是视频无延迟,但发送冗余包占用了额外的带宽资源。更为可行...原创 2020-06-22 19:39:16 · 1382 阅读 · 0 评论 -
从H265文件中读取文件并封装成RTP
源码地址:https://github.com/zhouyinfei/rtsp-netty-server首先上代码:public void playH265(File f){ //播放h265视频文件 BufferedInputStream in = null; try { in = new BufferedInputStream(new FileInputStream(f)); int buf_size = 64*1024; byte[] buffer = new byte[b原创 2020-06-07 18:58:08 · 2005 阅读 · 0 评论 -
从RTP包中解析H265数据
源码地址:https://github.com/zhouyinfei/rtsp-netty-server首先上代码://rtp拆包成nalu h265public static byte[] rtpToNaluH265Pack(RawPacket rtpPacket){ //h265码流处理// if (rtpPacket.getPayloadType() == 96) { //以下处理仅针对H265码流 ByteBuffer bb = null; .原创 2020-06-07 18:53:31 · 4016 阅读 · 1 评论 -
从RTP包中解析AAC数据
源码地址:https://github.com/zhouyinfei/rtsp-netty-server首先上代码://rtp拆包成ADTS列表public static List<byte[]> rtpToAdtsPack(RawPacket rtpPacket){ //aac码流处理 if (rtpPacket.getPayloadType() == 96) { //以下处理仅针对H264码流 byte[] rtpPayload = rtpPacke原创 2020-05-31 18:36:47 · 2541 阅读 · 1 评论 -
从h264文件中读取文件并封装成RTP
源码地址:https://github.com/zhouyinfei/rtsp-netty-server 在上一篇博客《将NALU封装成RTP包》中讲的是从NALU --> RTP, 这一篇博客讲的是:h264文件--> NALU --> RTP。本来从h264文件中获取NALU并不是难事,因为每个NALU之间都有一个固定的起始码00 00 00 01, 只要取出两个起始码之间的内容就是一个NALU单元了。问题是,实际的环境中,一个h264文件可能会非常大(100M以上...原创 2020-05-31 17:33:49 · 742 阅读 · 0 评论 -
将NALU封装成RTP包
源码地址:https://github.com/zhouyinfei/rtsp-netty-serverNALU封装成RTP包://nalu封装成rtppublic List<byte[]> naluToRtpPack(byte[] nalu, int ssrc, int fps){ byte[] pcData = nalu; //两个起始码(00 00 00 01)之间的NALU数据 int mtu = 1400; //最大传输单元 int .原创 2020-05-31 15:33:49 · 859 阅读 · 2 评论 -
从AAC文件中读取文件并封装成RTP
源码地址:https://github.com/zhouyinfei/rtsp-netty-server首先上代码://播放aac音频文件String filename = RtspNettyServer.outputPath + keyhash + ".aac";File f = new File(filename);if (!f.exists()) { o = new DefaultFullHttpResponse(RtspVersions.RTSP_1_0, RtspResponse原创 2020-05-31 19:04:59 · 829 阅读 · 1 评论 -
RTSP协议简要介绍
参考:RFC文档 https://www.rfc-editor.org/rfc/rfc2326.html目录1、RTSP方法定义1.1、OPTIONS1.2、DESCRIBE1.3、ANNOUNCE1.4、SETUP1.5、PLAY1.6、PAUSE1.7、TEARDOWN1.8、GET_PARAMETER1.9、SET_PARAMETER1...原创 2019-12-19 18:59:56 · 2710 阅读 · 0 评论 -
MediaDevices.getUserMedia` undefined 的问题
通过MediaDevices.getUserMedia()获取用户多媒体权限时,需要注意其只工作于以下三种环境:localhost域 开启了 HTTPS 的域 使用file:///协议打开的本地文件其他情况下,比如在一个HTTP站点上,navigator.mediaDevices的值为undefined。如果想要HTTP环境下也能使用和调试MediaDevic...转载 2019-12-18 13:58:35 · 383 阅读 · 0 评论 -
Ubuntu下使用Live555搭建流媒体服务器
一、下载安装wget http://www.live555.com/liveMedia/public/live555-latest.tar.gztar -xzvf live555-latest.tar.gzcd live./genMakefiles linux-64bit make二、运行cd mediaServer./live555MediaServer...原创 2019-12-12 20:40:24 · 3711 阅读 · 2 评论 -
[总结]视音频编解码技术零基础学习方法
一直想把视音频编解码技术做一个简单的总结,可是苦于时间不充裕,一直没能完成。今天有着很大的空闲,终于可以总结一个有关视音频技术的入门教程,可以方便更多的人学习从零开始学习视音频技术。需要注意的是,本文所说的视音频技术,指的是理论层面的视音频技术,并不涉及到编程相关的东西。 0.  ...转载 2019-11-11 21:49:40 · 231 阅读 · 0 评论 -
搭建Jitsi Meet视频会议服务器
1、在线示例https://meet.jit.si/在两个浏览器客户端输入同样的房间号之后,就可以开始视频会议了2、下载安装本次测试是在ubuntu 16.04的环境下进行的首先,安装jitsi-meetecho 'deb https://download.jitsi.org stable/' >> /etc/apt/sources.list.d/ji...原创 2019-05-11 18:48:21 · 40180 阅读 · 48 评论 -
使用Intel® CS for WebRTC搭建点对点视频通信服务器
1、下载资源本次测试的客户端使用Js,但是同时也提供了Android和IOS的SDK。https://download.youkuaiyun.com/download/qq_32523587/11151675 Peer服务器https://download.youkuaiyun.com/download/qq_32523587/11151679 ...原创 2019-05-05 10:52:55 · 1080 阅读 · 0 评论 -
WebRTC手记之初探
转自:https://www.cnblogs.com/fangkm/p/4364553.htmlWebRTC是HTML5支持的重要特性之一,有了它,不再需要借助音视频相关的客户端,直接通过浏览器的Web页面就可以实现音视频对聊功能。而且WebRTC项目是开源的,我们可以借助WebRTC源码快速构建自己的音视频对聊功能。无论是使用前端JS的WebRTC API接口,还是在WebRTC源码上构建自...转载 2019-03-26 11:31:11 · 125 阅读 · 0 评论