死磕音视频
这个作者很懒,什么都没留下…
展开
-
sip的简单理解
sip的简单理解概念功能重要特点简单的SIP通信由3个组件组成。常用消息概念(Session Initiation Protocol,会话初始协议是一个基于文本的应用层控制协议,用于创建、修改和释放一个或多个参与者的会话。SIP 是一种源于互联网的IP 语音会话控制协议,具有灵活、易于实现、便于扩展等特点应用层:在网络通信中最上层,实现业务的具体功能。信令:信息指令,表示协议的传输的内容是指令而非业务数据。控制:执行什么样的操作。功能用于创建、修改和释放一个或者多个参与者的会话。重要特点1原创 2020-06-05 23:27:51 · 1988 阅读 · 0 评论 -
FFmpeg实现拉WebRTC流,MetaRTC业界首个全开源方案来了
前言最近MetaRTC微信群。杨成立大佬提了一个建议,MetaRTC集成FFmpeg中,这样FFmpeg就可以实现推拉WebRTC流,MetaRTC采取了大佬的建议,与2022-1-20实现了FFmpeg拉webRTC流进行播放。全开源的方案,没有二进制库和私有协议,全都是开源代码和公开的协议。下面给大家介绍下使用方法。下载源代码gitee快速下载通道github下载通道打开连接后内容如下:ffmpeg-n4.3.3.7z为集成MetaRTC的FFmpeg...原创 2022-01-20 11:33:58 · 5839 阅读 · 3 评论 -
WebRTC samples 出现Cannot capture from element with cross-origin data
const leftVideo = document.getElementById('leftVideo');const rightVideo = document.getElementById('rightVideo');leftVideo.addEventListener('canplay', () => {const stream = leftVideo.captureStream();rightVideo.srcObject = stream;});<video id="原创 2020-06-29 16:27:53 · 1388 阅读 · 0 评论 -
嵌入式音视频解决方案 Webrtc vs MetaRTC
前言疫情后,音视频领域引来新的腾飞,视频会议,云桌面,云游戏等应用层出不穷。实时,高效,协同成了企业的代名词,没有这几点,感觉企业跟不上时代的步伐。前几日,刷爆朋友圈的 “天空课堂”,神舟十三号乘组航天员翟志刚、王亚平、叶光富将在空间站进行太空授课,中国载人航天工程办公室联合教育部、科技部、中国科协、中央广播电视总台共同主办。中央广播电视总台将进行全程现场直播。我们可以看到随着5G技术的成熟,人们对实时性,互动性提出了更高的要求。大名鼎鼎的Webrtc提到音视频,就不得不提谷歌的Webrtc,很多原创 2021-12-19 21:57:22 · 8741 阅读 · 0 评论 -
chrome升级到87版本使用webrtc对接freeswitch出现问题
Chrome升级到87版本后,使用webrtc对接freeswitch出现如下问题2020-11-20 14:29:59.401577 [ERR] switch_rtp.c:3185 audio Handshake failure 1这是因为Chrome升级后不在支持TLS1.0.1.1,使用openssl的需要把openssl升级到1.0.2或者使用CA证书或者使用opensips做一层转发...原创 2020-12-01 21:13:54 · 2976 阅读 · 7 评论 -
webrtc之使用opensips和rtpengine出现问题
前言使用opensips做信令转发和理由控制使用rtpengine做媒体转发使用jssip做web库出现的问题现象:外呼的时候可以接通,但是没有音频,查看rtpengine日志发现如下错误SRTP output wanted, but no crypto suite was negotiated 解决办法https://github.com/sipwise/rtpengine/issues/1095使用github上1095分支的代码即可...原创 2020-11-23 15:37:59 · 1701 阅读 · 0 评论 -
史上最全的WebRTC服务器技术选型分析
在上一篇文章里我们介绍了我们介绍了MCU和SFU的优缺点,webRTC通信方案SFU和MCU的区别?下面就来探讨下常见的SFU开源解决方案,当然,你也可以自己实现 SFU 流媒体服务器,但自已实现流媒体服务器困难还是蛮多的,它里面至少要涉及到 DTLS 协议、ICE 协议、SRTP/SRTCP 协议等,光理解这些协议就要花不少的时间,更何况要实现它了。前言所以最常见的办法就是使用开源的实现。但是这里我也想给大家说一定,用了开源的解决方案,能快速的搭建起业务,但是无疑也欠下了技术债,因为开源的解决方案肯原创 2020-06-07 17:28:59 · 6348 阅读 · 6 评论 -
五分钟搞定WebRTC视频录制
WebRTC中文社区是一个为大家解决在使用WebRTC当中遇到问题所建立的社区,欢迎更多学习和使用WebRTC的人加入进来,一起建设。视频录制在之前的文章里我们提到过视频录制的两种方式:客户端录制和服务端录制,以及他们的优缺点WebRTC-Client-Record服务端录制要根据你所使用的服务端,来决定视频录制的解决方案。所以不是本文讨论的重点,本文主要讨论使用WebRTC的客户端解决方案WebRTC-Client-Record是基于WebRTC所写的客户端视频录制解决方案,他已经完美得集成到原创 2020-08-03 19:16:59 · 3633 阅读 · 0 评论 -
WebRTC之搭建coturn服务遇到的问题
准备工作准备一台云服务器,没有的小伙伴可以去撸谷歌云300刀我这里是Ubuntu18.04clone coturn代码git clone https://github.com/coturn/coturn.git不懂git的请自行百度编译coturncd coturn./configure --prefix=/usr/local/coturn编译后的文件目录为/usr/local/coturn错误1install is /usr/bin/installpkill is /usr/b原创 2020-06-28 18:00:46 · 5972 阅读 · 0 评论 -
记录下kurento在内网视频几秒延迟播放
在内网使用kurento的时候会有几秒延迟的情况,经过排查是因为浏览器会默认隐藏内网的IP地址,所以需要设置一些额外的东西才可以将IP地址显示出来Chrome:在Chrome浏览器地址栏中输入:chrome://flags/搜索#enable-webrtc-hide-local-ips-with-mdns 该配置 并将属性改为 disabled之后按照chrome的指示重启一下IP地址就正常了。Firefox:在地址栏中输入:absout:config搜索配置media.peerconnect原创 2021-04-17 16:04:52 · 442 阅读 · 0 评论 -
WebRTC之完整搭建Janus-gateway的编译和部署
前言我最开始使用docker安装,结果docker安装的不是集成东西太多,导致镜像非常大。要么就是安装后发现问题多的,基本上没有维护。不知道是我没有找到好的docker镜像还是真的就没有好的,如果有觉得不错的janus的docker镜像欢迎小伙伴留言哈。注意:全篇建议在root用户下操作,如果没有办法执行root,那么在每条命令前面请加sudo准备工作一台Ubuntu18.04的服务器,拥有公网ip,最好是国外服务器,国内服务器下载依赖很慢。一个域名,提前把域名解析到服务器的公网ip使用ht原创 2020-06-30 20:35:14 · 3730 阅读 · 1 评论 -
使用kurento视频在几秒后卡死记录
使用kurento进行视频通话的时候,手机端的视频会在几秒后卡主。错误日志如下2020-09-17 20:02:38,622262 28868 [0x00007f9902ffd700] debug rtpjitterbuffer gstrtpjitterbuffer.c:1510 gst_rtp_jitter_buffer_src_event() <rtpjitterbuffer0> received custom-upstream2020-09-17 20:02原创 2020-09-20 23:56:04 · 517 阅读 · 0 评论 -
你知道吗?chrome自动更新到104版本,居然引起Java服务内存泄漏
近期在工作中,遇到了一次很有意思的内存泄漏,把排查过程和思路记下来,供大家参考和学习,如有不正确的,欢迎指正。1、为什么都是半托管的客户报这个问题,公有云未有客户反馈答:只有半托管客户满足公有ip访问私有ip的条件,且部分用户的chrome浏览器自动更新了2、这些半托管的客户为了稳定,代码已经很久没升级,代码都是2021年的,为什么都跟商量好似的,一起报问题,难道我有bug吸引体质?答:chrome自动更新导致3、为什么这些客户,物理机房隔离,问题表象却都一样?...原创 2022-08-12 09:53:46 · 395 阅读 · 0 评论 -
一次java内存top res高排查记录
分享一个最近的问题,top 看java进程res不断升高,一天能涨3个G,使用jmap dump内存快照后,dump下来的文件只有300多M,没有发现内存泄漏。这是个什么情况呢,我们深入分析下。首先,使用top来查看下当前进程的信息请添加图片描述可以看到top的res占用5.3g,jvm的参数如下早上的时候是4个g,下午的时候涨到7个g。通过gc日志和gc次数和时间来看,fullgc并没有有效的清理掉内存。我们使用手动触发一次fullgc,发现res还在持续增长,也就是说内存肯定有泄漏的地方。使用jmap原创 2022-07-11 15:33:39 · 5053 阅读 · 1 评论 -
线上真实案例:mongo被OOM的一次历险
前言近期线上平台出现一次故障,mongo数据库被oom了,由于是高可用架构,重新选举了主节点后,继续工作,没想到刚选举完又被oom,mongo重启达到了分钟级别,多个节点被oom后,不能很快的拉起来提供服务,对业务产生了巨大的影响。分析•目前从表面来看,有这样几个问题1.内存128g,在这么高的配置下都发生了OOM,那么看来是有优化空间的,mongo为什么吃了这么多内存 2.为什么启动这么慢通过表分析,发现有很多大表,其中一个巨大的表占用了110个g,且有频繁的读写。原因是因为有很多冷数据,未做冷热数据分离原创 2022-04-11 17:14:25 · 709 阅读 · 0 评论 -
记一次线上环境redis响应慢,导致雪崩
前言redis是主从加哨兵架构,java服务放在k8s上,使用springboot的actuator来进行健康检查。故障原因如下,redis因为cpu激增,导致响应慢,断开了和java的连接,正好在k8s健康检查的时间内,检查到java服务不正常,k8s干掉了java服务,导致业务不正常。解决思路首先防止雪崩效应,避免雪球越滚越大,网络波动是我们避免不了的,我们也不能因为这个原因,去加大k8s检查间隙时间或者关闭k8s的健康检查,不能因为丢了西瓜去捡芝麻,所以更合适的解决办法是,sprin.原创 2021-10-18 16:00:11 · 576 阅读 · 0 评论 -
前端跨域问题的解决思路
做了一个简单页面,做了一些数据埋点,想通过企业微信机器人来推送数据,遇到了一些问题,顺便记录下。由于是项目比较简单,直接使用了ajax去请求,代码如下请求的时候发现了跨域问题这里为什么会跨域呢?因为我在我自己域名上去请求其他域名。• jsonp(维信机器人接口只支持json)• 后端设置跨域 (改不了微信接口的后台)那有什么方案呢?先明白问题所在,是因为浏览器同源政策导致跨域的问题,那我请求的域名是同源的不就好了吗?下面说下具体方法我只需要把ajax请求的url更换成自己的域名,然后使用nginx转发到原创 2022-06-24 17:49:50 · 808 阅读 · 0 评论 -
记一次centos7上权限问题Permission Denied
权限在确认了是有访问权限和文件有权限的情况下,可以看下是不是和我一样的情况开启了SELinux或者AppArmor案例在nginx上使用方向代理python程序,nginx一直报502nginx配置测试 curl localhost/getNumbernginx访问日志127.0.0.1 - - [03/Aug/2021:15:46:03 +0800] "GET /getNumber HTTP/1.1" 502 3693 "-" "curl/7.29.0" "-"127原创 2021-08-03 17:31:52 · 3315 阅读 · 0 评论 -
记录rsyslog丢日志问题
现象使用rsyslog记录opensips的日志,当访问量大的时候,会出现丢日志的问题在系统日志有以下输入imjournal: 12856 messages lost due to rate-limiting或者Suppressed 6273 messages from /user.slice/user-1085.slice原因在 Linux 中,默认情况下有一些不同的机制可能会限制速率日志记录。这些主要是默认设置的 systemd 日志和 rsyslog 速率限制。为什么限速?日志记录的原创 2021-08-18 17:12:42 · 1589 阅读 · 0 评论 -
记一次opensips DNS问题
现象invite 到opensips的时候,发现opensips无响应,这个情况不是固定出现,而是周期性的,比如几个invite出现一次。日志将日志调整为debug级别后,查看到关键日志的信息DBG:core:mk_proxy: doing DNS lookup...Aug 19 19:42:25 tv7-inbound-proxy-1 /usr/local/sbin/opensips[25820]: DBG:core:sip_resolvehost: no port, no proto ->原创 2021-08-19 21:39:09 · 251 阅读 · 0 评论 -
记一次python cpu100%分析记录
找到进程号 pid比如我这里进程号为3151 ps -ef | grep python root 3151 1 0 15:56 ? 00:00:10 python random-server.py 9999查看进程中线程占用情况top -Hp 3151跟踪进程的执行栈watch pstack 3151跟踪函数的调用strace -f -p 3151查看进程中线程的详细信息cat /proc/3151/task/3151/status..原创 2021-08-03 17:17:09 · 1206 阅读 · 1 评论 -
chrome108 版本跨域问题
客户访问我公司的公网的网站,比如http://example.com,然后客户连接vpn。网站根据客户登录的账号,找到服务器,坐席通过vpn和服务器通信• 服务器的ip地址:10.20.31.72• 客户连接了vpn后的地址为10.20.25.124客户使用chrome浏览器,chrome自动更新策略,浏览器更新到了当前最新版本108.0.5359.95,更新后客户登录网址发生了如下错误。The request client is not a secure context and the resou原创 2022-12-06 17:14:01 · 3446 阅读 · 1 评论 -
一次跨域问题的记录
最近一个项目,因为某些原因,需要从https访问改为http访问,在改造中出现了跨域的问题,在这里记录下。项目使用nginx做反向代理。原创 2022-07-26 15:52:39 · 1043 阅读 · 0 评论 -
记一次TCP TIME_WAIT引发的血案
前言记录线上一次故障,状态延迟,状态使用短连接,长轮训的方式获取,在每天的固定时间点,出现状态延迟,持续几分钟,然后又莫名其妙的恢复了,很是怪异,下面就来复盘下,这次问题的定位和思考。冰山一角我们可以掌握的线索有1.固定的时间点,发生。2.通过监控可以看到,流量并不高,但是TCP TIMEWAIT一瞬间疯涨3.出问题的时间点,远程客户的电脑(全内网),ping网关和服务器,发现有大量延时4.有同事通过jstat看,发现gc的次数很多,认为gc导致了接口延时。5.接口超时的时间点,CPU不高原创 2022-02-28 18:19:17 · 2572 阅读 · 0 评论 -
腾讯云和阿里云tcp三次握手的区别
前言近日同事遇到一个诡异的问题,帮忙进行了排查,好家伙不查不知道,一查让我知道了,腾讯云和阿里云TCP三次握手居然还有差异,没有想到云厂商这种Iass级别的服务,还有不同的标准~问题现象•客户是半托管客户,我们部署服务请求阿里云的nginx,nginx作为LB,反向代理了N个java服务,Java服务入库.请求链路如下: 客户物理机Java->阿里云 nginx->阿里云Java•从客户物理机请求阿里云的nginx的时候,出现了包太大,读取超时,包小,则无问题。从 物理机到-腾讯云的nginx-原创 2022-03-11 09:48:30 · 3413 阅读 · 0 评论 -
ssh 免密登录失败
近期遇到个ssh的问题,使用ssh key免密登录,帮小时前都是正常的,突然使用的时候就需要输入密码了,错误信息如下这里记一下解决思路客户端开启debug模式,这里可以使用-vvv -vv来查看日志由于我们这边只有登录13这台服务器是 不行。其他服务器是正常的,所以排除掉是客户端的问题服务端的日志可以在/var/log/secure 下查看,但是一般也看不出什么有用的信息解决思路,新监听一个ssh端口,客户端往新端口ssh,服务端能看到详细的日志这里看到服务端的日志是因为权限问题还要确保路径是存在的。原创 2022-12-27 17:23:31 · 637 阅读 · 0 评论 -
5分钟带你了解Prosody XMPP Server
WebRTC中文社区欢迎大家的加入Prosody是用Lua编写的免费开源XMPP服务器。快速,轻巧。 XMPP是即时消息传递的最佳协议。本教程介绍了如何在Ubuntu 18.04上安装和配置Prosody XMPP Server。完成本教程后,您将拥有自己的聊天服务器。步骤1:在Ubuntu 18.04上安装ProsodyProsody包含在默认的Ubuntu存储库中,但是它很旧。 Prosody团队维护一个软件包存储库。如果要获取最新版本,则需要使用以下命令添加Prosody存储库:echo ‘d原创 2020-08-08 10:01:13 · 3315 阅读 · 0 评论 -
镜像方式安装Jitsi-No subject alternative DNS name matching authfound. Tried auth,internal.auth
之前在测试环境安装过jitsi,然后使用打机器镜像的方式又重新安装了一次,出现这样的错误,记录一下,送给有缘人。原创 2023-06-23 15:40:06 · 295 阅读 · 0 评论 -
jitsi meet提示 Video Quality Impaired - Bridge Channel Disconnected (Real Time Video Attached)的解决方案
1.首先这个提示Video Quality Impaired - Bridge Channel Disconnected (Real Time Video Attached)3.检查jvb的日志。比如jvb默认监听10000 udp端口,端口被占用,启动出问题,就会连接websocket失败。2.jvb和客户端是通过websocket连接的,所以要检查websocket连接是否有问题。代表是客户端和jvb组件连接出现问题,一般浏览器都会有日志。原创 2023-01-04 11:26:08 · 845 阅读 · 1 评论 -
jitsi-meet安卓端进入房间就断开连接
近安装jitsi-meet后,web端使用chrome正常,但是安卓端进房间就报错。原创 2022-12-24 20:22:35 · 1188 阅读 · 1 评论 -
编译jitsi-meet安卓遇到的问题
最近编译jitsi-meet的最新版的时候。在安卓的时候遇到个错误,而且官方现在还没有修复。记录一下,给有需要的人。react-native-gesture-handler RNGestureHandlerModule.kt: (11, 22): Unresolved reference: common解决方案,在package.json里面,把react-native-gesture-handler的版本升级成v2.2.0,在重新npm install,安卓在重新build 就好了。或者,修改代码在原创 2022-07-06 16:05:56 · 1410 阅读 · 2 评论 -
webrtc弃用并删除plan-b,jitsi-meet同步支持
前言webrtc弃用plan-b,在chrome96版本以上,如果使用plan-b,那么会创建RTCPeerConnection的时候会失败,公告如下: https://chromestatus.com/feature/5823036655665152解决方案• 使用chrome96版本以下的浏览器• 参加chrome延期plan-b计划,地址如下 https://developer.chrome.com/origintrials/#/view_trial/389223597795495原创 2022-05-17 18:53:51 · 299 阅读 · 0 评论 -
jitsi-meet修复log4j安全漏洞
前言之前log4j爆出漏洞CVE-2021-44228 和 CVE-2021-45046,作为视频会议框架的jitsi-meet也收到了波动,需要修复下这个漏洞,不然会存在安全隐患。修复方式在jitsi-meet模块中,jitsi-videobridge使用了log4j日志框架。下面我们来谈一下怎么修复• 首先网上下载log4j的jar包,如果网上搜索不到的可以找我。• 进入目录,替换jar包cd /usr/share/jitsi-videobridge/lib/mv&nbs原创 2022-04-25 15:58:34 · 471 阅读 · 0 评论 -
WebRTC之Jitsi-meet实现语音转文字
前言Jigasi为我们提供了调用谷歌的api进行语音转文字(transcribe)的功能该功能十分强大,由于默认是实现谷歌的API,国庆访问可能会有问题。大家也可以手动编写代码改成国内云厂商的API。准备工作先搭建稳定的Jitsi服务准备谷歌账号,开启speech-to-text的API(没有的可以找我)下载json文件放入服务器安装谷歌sdk根据官网文档来没啥好说的安装jigasisudo apt install jigasi如果你不使用sip要求你输入的sip账号和密码可以随便填原创 2020-09-26 23:12:38 · 1110 阅读 · 0 评论 -
webm进度条和修复问题
问题我们使用getUserMedia、MediaRecorder等API生成的webm视频时,会发现视频的进度条无法拖动,等视频播放完一次后,这个进度条就可以拖动了解决办法1.转码为其他视频格式文件2.以上问题的原因是在Chrome独有的,火狐是没有这个问题的。详情问题的原因可以查看以下连接,描述的很清楚,这里不再重复。https://zhuanlan.zhihu.com/p/66503782https://stackoverflow.com/questions/38443084/how-ca原创 2020-09-07 19:34:56 · 3603 阅读 · 0 评论 -
Jitsi设置websocket访问
Jitsi默认使用XMPP协议的BOSH和http进行绑定也可以使用websocket进行和服务器的绑定jitsi-meet下的config.js设置如下ar config = { hosts: { domain: 'meet.example.loc', focus: 'focus.meet.example.loc', muc: 'conference.meet.example.loc' }, // BOSH URL. FIXM原创 2020-08-12 18:41:54 · 1988 阅读 · 0 评论 -
mac上设定prosody 用户
prosody需要prosody用户来执行mac上创建用户的命令sudo dscl . -create /Users/prosodysudo dscl . -create /Users/prosody UserShell /bin/bashsudo dscl . -create /Users/prosody RealName "prosody"sudo dscl . -create /Users/prosody UniqueID "1010"sudo dscl . -create /Users/原创 2020-08-12 18:40:48 · 168 阅读 · 0 评论 -
Prosody如何查询已经注册的用户
WebRTC中文社区是一个为大家解决在使用WebRTC当中遇到问题所建立的社区,欢迎更多学习和使用WebRTC的人加入进来,一起建设。在之前的一篇文章中我们介绍了prosody如何创建用户但是有的时候我们需要查询已经注册的prosody用户,来确保用户已经注册上了查了官方文档后没有发现直接相关的命令具体查看如下ls -l /var/lib/prosody/*/accounts/*如果想使用prosodyctl命令查下,需要下载相关module一般的prosody的modules的路径在/us原创 2020-08-08 10:11:10 · 708 阅读 · 0 评论 -
手动源码编译 Jicofo 启动报错 unable to find valid certification path to requested target
完整报错如下:Jicofo 2020-08-07 09:19:09.896 SEVERE: [16] org.jitsi.impl.protocol.xmpp.XmppProtocolProvider.log() Failed to connect/login: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException:原创 2020-08-08 10:09:49 · 658 阅读 · 0 评论 -
Can not invite participant – no bridge available” since last update
WebRTC中文社区是一个为大家解决在使用WebRTC当中遇到问题所建立的社区,欢迎更多学习和使用WebRTC的人加入进来,一起建设。当第二个人加入房间时候崩溃第一个人进入房间后正常,第二个人进入房间后崩溃查看jicofo日志发现Jicofo 2020-08-06 10:57:30.711 WARNING: [83] org.jitsi.jicofo.bridge.BridgeSelectionStrategy.log() Failed to select initial bridge for pa原创 2020-08-08 10:08:16 · 1165 阅读 · 0 评论