Web网页直播点播RTMP推流平台EasyDSS互联网视频云服务提供一站式的转码、点播、直播、录像、检索、时移回放服务,极大地简化了开发和集成的工作,配合OBS、EasyRTMP等直播推流工具以及EasyPlayer 近期有客户向我们咨询,在设备中设置了推流地址,但是页面却没有播放成功。TSINGSEE青犀视频技术团队第一时间进行了排查。 image.png 我们进入客户的EasyDSS平台后,发现没有显示直播的地方,这也就表明推流并没有成功。 客户的推流地址是:rtmp://rtmp.ccmapp.cn:10035/hls/GGZcTcXMR? sign=GGZ5ocuGgz 我们仔细一看,猜测推流失败的主要原因,是客户的TCP 10035端口没有对外开通。只需要将该端口对外开通,就可以成功推流直播了。
众所周知(并不是),图神经网络通常遵循message passing框架,即:沿着节点之间的边进行信息的传播,并更新节点表示。 上述方式是保持图上结构的好方法,也在很多任务上得到了验证。 image-20210623003720582 本文和目前GNN的最大差异如下图所示: 目前的GNN都是用邻接矩阵A来指导消息传播和聚合过程,后面接一个任务loss,如分类的cross entropy 这里设计了所谓的Neighboring Contrastive Loss 来进行优化。简单来说就是:距离比较近的节点,其表示优化成相似的;距离比较远的节点,其表示优化成不相似的。 ? image-20210623004056645 具体是怎么做的呢? 首先明确一下,节点的表示是否应该相似。如果节点 在节点 的r-hop范围内,则认为两者应该相似。 随机对图结构加上噪音之后,GCN的表现会大幅度的下降,而Grpah-MLP基本保持稳定。 ? img 最后,其实本文的做法在先前的Graph Embedding已经有一些了。
9.9元享100GB流量,快直播体验仅需8.8元,结合视立方SDK快速构建云+端一体化直播平台,支持电商带货、在线教育、游戏直播等多样音视频互动场景
比hls、HTTP-FLV复杂多了。那么他为什么复杂呢,是不是仅仅因为HTTP我们经常见到,而rtmp不常接触? Message Stream Id: 消息流ID,标识消息所使用的流,用大字节序表示。 此字段根据块流ID的不同,长度可能为1,2或3字节。在实现协议时,此字段应该使用可以容纳ID的最小长度。此协议支持最多65597个流,ID从3到65599。0,1,2这三个为保留ID。 以下是基本头的每个占位介绍: 3.3分块例子 四、交互过程 4.1推流 ! 4.2拉流 五、实践观察 5.1rtmp推拉流环境搭建 参考视频协议学习--HLS的环境部署 5.2rtmp推拉流抓包 5.2.1主要的推流包介绍 5.2.2主要的拉流包介绍 拉流的其他流程与推流类似
ffmpeg推流。 在推流之前我们需搭建一个本地的nginx推流服务器用来测试。 主要参考的这篇文章 iOS直播app(推流篇)在这里不做过多的阐述,有兴趣的朋友可以跟着做一做。 我这边配置好的nginx推流服务器的配置文件nginx.conf内容为 #user nobody; worker_processes 1; #error_log logs/error.log; 得到的推流服务器地址如下 rtmp://localhost:1991/liveApp/room 如果先前已经做过Mac编译ffmpeg获取FFmpeg-iOS这一步的话,不需要再继续下载ffmpeg。 \n"); return; } return; } 运行app的时候用VLC播放器打开我们的推流地址即可看到推流效果。 ?
深度学习的标志之一是使用具有数十甚至数百层的神经网络。与此形成鲜明对比的是,图深度学习中使用的大多数架构都很浅,只有少数层。在这篇文章中,本文探讨一个问题:图神经网络模型的深度是否带来任何优势? NodeNorm 效果最佳,但它的最佳效果是在两层图网络时取得的。这个实验告诉我们,要将深度图网络带来的提升和训练它所需要的技巧分开讨论是很难的。 根据问题的特性,有的问题则可以通过短距离的信息解决,比如社交网络中,预测往往仅依赖于结点的局部邻居;有的问题可能需要更长距离的信息,比如分子图种分子的化学性质可能取决于另一侧的原子组合,这就需要深度图网络来组合这些远程信息 多层的图网络也能学到逐渐复杂的性质吗?我们目前尚不清楚哪些图形性质可以用浅层图网络学到,哪些需要更深的网络,哪些是根本无法计算的。 有趣的是,这跟 CV 领域的发展历程恰恰相反,CV 领域早期的浅层模型一般使用的是大型 filter(比如:11×11),后来逐渐发展到使用小型 filter(比如 :3×3)的深度模型。
原则上,每个输入/输出“文件”都可以包含任意数量的不同类型的视频流(视频/音频/字幕/附件/数据)。 流的数量和/或类型是由容器格式来限制。 要引用选项中的输入文件,您必须使用它们的索引(从 0 开始)。 例如。 第一个输入文件是 0,第二个输入文件是 1,等等。类似地,文件内的流被它们的索引引用。 例如 2:3 是指第三个输入文件中的第四个流。 rtmp://server/live/streamName视频流保存为dump.flv文件 实时推流命令 ffmpeg -framerate 15 -f avfoundation -i “1” -s 1280x720 在部分常见的应用场景中,由于ffmpeg的领先性、包容性,并且还具有高度的便携性,很多客户都会使用ffmpeg来进行视频的处理,通过ffmpeg推流到视频服务器,如果大家对ffmpeg推流比较感兴趣,也可以和我们交流
,这一篇是在HLS点播实现(H.264和AAC码流)基础上的延续,进行HLS的推流。 核心思路 配置Nginx以支持HLS的推流与拉流,iOS系统使用LFLiveKit推流,OS X系统使用FFmpeg推流,拉流端可以使用Safari浏览器或者VLC播放器。 效果展示 ? 使用FFmpeg对前文生成的mp4文件进行推流(FFmpeg的安装看HLS点播实现(H.264和AAC码流)) 在终端输入指令: ffmpeg -re -i abc.mp4 -vcodec copy 总结 本来想手写一次RTMP的推流,但是看到LFLiveKit之后,我觉得不用重复造轮子了,其详细的代码已经足够深入学习。 的推流过程、应对网络变化的丢帧策略等可以看LFLiveKit的源码。
EasyCVR平台支持设备通过国标GB28181、RTMP、RTSP/Onvif、海康SDK、大华SDK、Ehome等协议接入,对外可分RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。 今天和大家分享一下如何将推流设备通过RTMP推流,将视频流推送到EasyCVR平台。 操作步骤及过程中遇到的问题解决方法如下:1)将OBS的推流地址设置为EasyCVR平台的推流地址:2)推流成功后,播放正常:3)若通道禁用导致推流中断,再次重新启用通道重新推流,这时出现通道无法上线的情况 :4)此时需要修改配置文件tsingsee.ini,将端口改为29350,http_notify的enable=true,如图:5)重新启动服务,此时通道上线,推流播放正常。 关于RTMP推流的相关技术性文章,我们在博客中也分享过,感兴趣的用户可以翻阅往期文章进行了解。若有用户遇到无法解决的问题,也可以联系我们协助排查。
由于重力感应的影响,Android小程序推流旋转手机,远端拉到的画面被裁剪;小程序没有开放重力感应的API,只能通过如下方式规避: 目前现象: 1、Android手机横屏拍摄,如果不设置横屏推流,PC 拉流画面则不完整;竖屏拍摄则需要设置竖屏推流; 2、iOS横屏拍摄,不设置横屏分辨率,PC拉流画面完整。 设置横屏分辨率,画面不完整; 总结:小程序横屏拍摄,如果需要拉流端观看画面完整,Android需要设置横屏分辨率,iOS不用设置;小程序竖屏排查则需要设置竖屏推流; Android手机横屏,远端拉到的画面 还是ios; 2、再通过wx.onDeviceMotionChange监听设备方向变化 ①如果当前是android设备,手机横屏时就设置videoOrientation设置为horizontal推流 ; 手机竖屏时就设置videoOrientation设置为vertica推流; ②如果当前是ios设备,就设置videoOrientation设置为vertica推流; 这样可以保证远端拉流画面不被裁剪
推流和播放的事件码我们通常通过这个来判断当前的流的状态 推流事件列表 code TXLiveSDKEventDef常量 含义说明 1001 PUSH_EVT_CONNECT_SUCC 已经连接推流服务器 1002 PUSH_EVT_PUSH_BEGIN 已经与服务器握手完毕,开始推流 1003 PUSH_EVT_OPEN_CAMERA_SUCC 打开摄像头成功 1005 PUSH_EVT_CHANGE_RESOLUTION 推流动态调整分辨率 1006 PUSH_EVT_CHANGE_BITRATE 推流动态调整码率 1007 PUSH_EVT_FIRST_FRAME_AVAILABLE 首帧画面采集完成 1008 PUSH_EVT_START_VIDEO_ENCODER ,更多重试请自行重启推流 -1308 PUSH_ERR_AUDIO_SYSTEM_NOT_WORK 系统异常,录音失败 1101 PUSH_WARNING_NET_BUSY 网络状况不佳:上行带宽太小, 服务器连接失败 3003 PUSH_WARNING_SHAKE_FAIL RTMP服务器握手失败 3004 PUSH_WARNING_SERVER_DISCONNECT RTMP服务器主动断开,请检查推流地址的合法性或防盗链有效期
这就涉及到了推流,如下图,基于JavaCV的应用将摄像头的视频帧推送到媒体服务器,观看者用播放器软件远程连接媒体服务器,就能观看摄像头的内容了: 今天的主要工作就是开发上图的JavaCV应用,然后验证功能是否正常 ,这是AbstractCameraApplication的子类,其代码很简单,接下来按上图顺序依次说明 《JavaCV的摄像头实战之一:基础》中已部署好了媒体服务器,这里定义一个成员变量保存媒体服务器的推流地址 int getInterval() { // 相比本地预览,推流时两帧间隔时间更短 return super.getInterval()/4; } 至此,推流功能已开发完成 ().action(600); } 运行main方法,等到控制台输出下图红框的内容时,表示已经开始推流: 用本机或局域网内另一台电脑,用VLC软件打开刚才推流的地址rtmp://192.168.50.43 :21935/hls/camera,稍等几秒钟后开始正常播放: 还可用VLC的工具查看编码信息: 至此,咱们已完成了推流功能,验证远程播放也正常,得益于JavaCV的强大,整个过程是如此的轻松愉快,
昨晚有幸听了上海长海医院任善成教授的关于前列腺癌的精准诊疗的演讲,任教授提到了他们2021年1月在在 Nature Cell Biology 杂志发表了题为《Single-cell analysis reveals 我就顺手下载了打开读了一下,发现他们的单细胞转录组数据降维聚类分群后的可视化选择的是tSNE,感觉看起来呢各个单细胞亚群之间的边界线有点不清晰。 在其它癌症很少看到这样的完美的的结果。 人人都能学会的单细胞聚类分群注释 ,是很早期的笔记,那个时候还没有采用harmony这样的节省时间的多个单细胞样品整合的算法。 我们直接看看默认命名后的结果: 我自己觉得,我们复现后的降维聚类分群结果,理论上比文章的好看一点,这就是我先表达的结论:umap的单细胞可视化效果比tSNE好 不知道你是否认同呢?
从这点来说,无疑 Kotlin 的抽象程度是比 Java 要高的,就像是 C 语言的抽象程度比汇编要高一样。实际上,我还还真有个朋友拿 Java 比作汇编。 你也不用担心这里面有没有 break,或者你是否忘了写 break。 这就是 Kotlin 让代码更容易理解的地方。 这时候,就会有一些讨论,有一些标准出来,人们就会认识到,不可变性(Immutability)原来有这么大的价值,原来是这么好的一个东西。 应该像 Rust 一样,让可变的变量定义起来比不可变的变量定义起来更费劲,这才能更加促进不可变量这种好的 practice 的发扬光大。 希望上面的文章能让你从代码可读性的角度,了解 Kotlin 的优势。让好的技术在这个世界盛行,对技术人来说,是一件非常值得欣慰的事情。
之前的博文我们和大家分享过EasyNTS上云网关目前正在研发推流功能(EasyNTS上云网关推流直播实现流程),大家有兴趣可以去了解一下这个推流流程,但是由于功能目前还在不断测试中,测试完成将会上线与大家见面 近期测试EasyNTS上云网关的推流功能时,在EasyNTS上云网关中的推流配置那一栏,我们在上传表格的时候,将推流状态开启,然后进行上传到数据库中。 其中正常的现象应该是会触发拉流和推流,但是并没有触发。 ? 经过分析,我们知道是在上传表格的时候,对每条数据进行处理中,对于推流状态没有进行判断,从而导致没有进行推拉流的操作。 因此我们在上传表格的时候,对每条数据进行判断,判断如果推流是开启状态的,则进行拉流和推流操作。 以下为参考代码: if channel.IndexCode ! = "" { //检测数据库中的数据不能大于等于通道限制 dao.DB().Table(consts2.TableChannelInfo).Count(&count) if count
本文转载自博客园博主rtc8_com的博文:开发Rtmp推流端开发库的几种选择方案 要开发一个Rtmp协议的推流工具,目前用以下几种实现方案: 1、使用ffmpeg方案,ffmpeg本身功能非常丰富, 要使用ffmpeg推流,编译时一定要把x264,libfaac,rtmp协议打进去,编译出来的so,dll大概2M多一点。 ffmpeg推流方案实现起来开发速度比较快,缺点就是好多地方都是黑盒,细节不好控制。 2、使用x264+libfaac+librtmp方案,使用这个方案,自己要实现的的地方比较多。 x264,faac编码参数都可以自己定制,时间戳,推流缓冲区控制等细节都要完全自己实现。难度比上一种要大一点,但是自己可以控制的细节比较多,比较灵活。 我们在使用过程中发现srs-rtmp比librtmp接口封装的更合理点,而且srs-rtmp库只是一个单文件,完全可以放到自己的工种中去,不用单独把rtmp库编译成一个静态库或者动态库。
作者:周超 导语 随着直播平台爆发式增长,直播平台从 PC 端转战移动端,紧跟着直播的潮流,自己学习实现了一套简单的 H5 视频推流的解决方案,下面就给小伙伴们分享一下自己学习过程中的经验。 详细介绍可以参考:《【经验分享】音频、视频利器——FFmpeg》 模拟推流 先来看一个简单的直播推流流程图 : [1497340227199_939_1497340227139.png] 用 flv 视频文件模拟 RTMP 视频流: # ffmpeg -re -i test.flv -vcodec copy -acodec copy -f flv rtmp://ip:1935/myapp/mystream 注:RTMP(Real Time Messaging Protocol),实时消息传输协议,用于视频直播协议,和 HLS 一样都可以应用于视频直播; 用 mp4 视频文件模拟 HLS 视频流: ffmpeg
在直播卖货小程序源码中,含有直播功能的。因此,是需要通过微信小程序后台配置推流接口的,那么具体该如何实现呢?下面小编将结合代码,为大家具体讲解下。 2、在小程序wxml页面使用live-pusher标签进行推流,目前小程序推流地址只支持rtmp格式,点击推流按钮之后进行推流。 </button> 3、js里面现在onready里面实例化推流,并且进行推流预览,然后点击推流按钮进行推流,监听页面卸载,在页面卸载时停止推流。 Page({ /** * 页面的初始数据 */ data: { pusherContext:null,//推流实例 url:’rtmp://’,//推流实例 }, /** e.detail.code == 1007){ //首帧画面采集完成 }else if(e.detail.code == 1008){ //编码器启动 } }, }) 以上就是直播卖货小程序源码中,关于推流的实现方法
直播源码总体上说,是通过“推流”和“拉流”两个动作来完成的。 而推流和拉流中间,还有一个流服务器,作为存储音视频数据的中转站,用来存储直播数据。 细致一点说,直播是由推流端、源站、拉流端三部分组成,推流端,比如直播的人通过手机APP、PC、小程序,进行直播,再让收看的人观看,就称为推流端,通过这些音视频数据采集工具,使用TRMP协议将直播人的直播数据 ,推到源站,观看直播的人,再通过拉流的相关协议和地址,拉取直播人的直播数据,在播放端,比如手机、平板、PC上就可以观看了。 一直播系统源码的可用性要求,播放成功和连续播放,不能出现卡顿的现象,用户正常拉到流,进行播放和观看,画面质量不能有异常,具体要求如下: 1、能够获取到视频数据。 2、数据获取环节避免有延迟。 如果帧率太低、上传受阻、或者下行不佳都有可能造成以上状况,优化这些问题,只能从推流端和播放端进行优化,如选择质量较好的网络、视频编码参数设置合理、缓冲区大小合适便可合理避免上述情况。
B树的数据指针存储在各层节点中 , B+树的数据都存储在了叶子节点 , 那查找的时候B+树比B树效率按逻辑应该更高吗? 这样的情形下 , B树的数据存储的比较分散 , 在磁盘里进行查找的时候 , 不能利用上局部性原理 , 反而效率是更低的. B+树叶子节点之间还有链表连起来了 , 如果是个范围的查询 , 那么就只需要找到前一个和后一个 ,中间遍历链表就可以了 B树还要不停的去遍历整个树 , 才能进行范围查询 , 也是慢的.
本篇概览 本文是《JavaCV的摄像头实战》的第七篇,在《JavaCV的摄像头实战之五:推流》一文中,咱们将摄像头的内容推送到媒体服务器,再用VLC成功播放,相信聪明的您一定觉察到了一缕瑕疵:没有声音 虽然《JavaCV的摄像头实战》系列的主题是摄像头处理,但显然音视频健全才是最常见的情况,因此就在本篇补全前文的不足吧:编码实现摄像头和麦克风的推流,并验证可以成功远程播放音视频 关于音频的采集和录制 本篇的代码是在《JavaCV的摄像头实战之五:推流》源码的基础上增加音频处理部分 编码前,咱们先来分析一下,增加音频处理后具体的代码逻辑会有哪些变化 只保存视频的操作,与保存音频相比,步骤的区别如下图所示 因此当主线程结束录制后,需要中断定时任务中的while循环,因此新增了volatile类型的变量isFinish,帮助定时任务中的代码判断是否立即结束while循环 改造原本推流时只推视频的代码 接着是对 ): 用VLC自带的工具查看媒体流信息,如下图,可见视频流和音频流都能正常识别: 打开媒体服务器自身的监控页面,如下图,可以看到各项实时数据: 至此,咱们已完成了音视频推流的功能,(有点像直播的样子了
云直播(CSS)为您提供极速、稳定、专业的直播云端处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、慢直播、快直播三种服务,分别针对大规模实时观看、高并发推流录制、超低延时直播场景,配合移动直播 SDK,为您提供一站式的音视频直播解决方案。
扫码关注腾讯云开发者
领取腾讯云代金券