Electron 低延迟视频流播放方案探索 Bobi.ink 2020-04-05 好久不见,接近四个月没更新博客了!...我们不需要处理语音(由底层库直接播放), 这就要求我们的视频播放延迟不能太高, 出现语音和视频不同步。 不需要考虑浏览器兼容性。...目录 ① 典型的Web直播方案 RTMP 推流 RTMP 拉流 RTMP 低延迟优化 ② JSMpeg & BroadwayJS Relay 服务器 推送 视频播放 多进程优化 简单说一下 Broadway.js...而且在对接到底层库实际推送时,播放效果并不理想,出现各种卡顿、延迟。由于时间和知识有限,我们很难定位到具体的问题在哪, 所以我们暂时放弃了这个方案。...我们还可以利用requestAnimationFrame 由浏览器来调度播放的速率,丢掉积累的帧,保持低延迟播放。
几秒钟后,视频继续播放,这会很烦人,尤其是和朋友一起看比赛的时候。 自适应播放技术概述 低延迟体育节目是低延迟直播的主要驱动力。...在提供优质的低延迟实时流媒体服务这方面,我们开发了一些实用的技术,比如说自适应播放——通过改变每秒播放的帧数来减慢播放速度,并对音频和字幕做同样的事情。...在第二种情况下,在中间的情节中,我们只关注当前的延迟,而这正是 DASH:GS 今天所做的。如果当前延迟增加,您将提高播放速度,并尝试赶上实时边缘。...请注意,虽然 CAPSC 可以在短期内改变播放速度,但在低延迟直播中,长期平均播放速度不能快于 1 倍。...如果是这样,CAPSC 会选择较慢的播放速度。如果当前缓冲区级别不是非常低,CAPSC 检查当前延迟和目标延迟之间的差异,并选择 1x 或更高的值作为播放速度。
播放器如果要提供播放效率和秒开其实本质上是做好解复用(Demux),Demux是指解析视频的封装格式,得到包含的音视频原始码流,Demux时间越短,就越快得到视频流,从而加快秒开速度,实现我们想要的低延迟播放的效果
在网校教学场景中,从主讲端推流,到视频CND节点分发,最后到用户侧设备播放,这 3 个过程,哪一个是最耗时的?直播延迟,主要延在了哪一步?第 2 步。...第 2 步,采用 UDP 分发,甚至可以复用成熟多年、穿透能力强的 P2P 分发方案,保证从数据中心,低延迟分发各个运营商的边缘分发节点。这种分发方案避免了主要的分发延迟。...第 3 步,从边缘节点到用户设备,通过 WebSocket 连接边缘节点,使用 jsMpeg 播放 video1mpeg 视频流,延迟可以控制在 50ms。50ms 已经非常低了。
技术背景RTMP播放器的延迟可以受到多种因素的影响,包括网络状况、推流设置、播放器配置以及CDN分发等。因此,RTMP播放器的延迟并不是一个固定的数值,而是可以在一定范围内变化的。...然而,当网络状况不佳、推流设置不当或播放器配置不合理时,延迟可能会增加。具体来说,RTMP播放器的延迟可能受到以下因素的影响:网络状况:网络延迟和丢包是影响RTMP播放器延迟的重要因素。...例如,降低GOP的值可以减少延迟,但可能会增加编码器的负担和压缩率。播放器配置:播放器端的设置,如缓冲区的大小、播放模式的选择等,也会影响播放的延迟。...例如,设置较小的缓冲区可以减少延迟,但可能会增加播放过程中的卡顿现象。CDN分发:CDN(内容分发网络)的引入可以加速内容的传输和分发,但CDN节点的选择和配置也会影响播放的延迟。...需要注意的是,虽然可以通过上述措施来降低RTMP播放器的延迟,但完全消除延迟是不可能的。
技术背景 实际上,我们在2015年做Android平台RTSP、RTMP播放模块的时候,第一版就支持了多实例播放,因为SDK设计比较灵活,做个简单的player实例封装即可实现多实例播放(Android...Unity的就有多路demo),所以官方一直没有正式demo,本次也是有个开发者提到,希望测试下我们多路播放的效果,自己又不想做封装,索性给做个版本。...技术实现 废话不多说,先上图: 我们针对的功能展示,主要是播放和录像这块,先说播放: /* * SmartPlayer.java * Author: daniusdk.com * Created...、录像的演示,除此之外,大牛直播SDK的RTSP、RTMP播放器海康实现播放缓冲设置、软硬解码设置、实时快照、实时音量调节、实时解码后数据回调等。...毫秒级延迟,完全满足对延迟、稳定性要求苛刻的场景下。感兴趣的开发者,可以单独和我沟通。
好多开发者在QT环境下实现RTMP或RTSP播放时,首先考虑到的是集成VLC,集成后,却发现VLC在延迟、断网重连、稳定性等各个方面不尽人意,无法满足上线环境需求。...本文以调用大牛直播SDK(官方)的Windows平台播放端SDK为例,介绍下如何在QT下实现低延迟的RTMP|RTSP播放器,废话不多说,先上图: QTPlayer.png 大牛直播SDK有MFC的demo...,所以在QT上实现播放轻车熟路,如果需要多窗口播放,也可以参考转发的demo,转发的那个4窗口预览的demo做了二次封装,调用更方便。...考虑到大多场景下,开发者有多路播放诉求,针对这种情况,我们对player做个简单的封装: 开始播放: bool player_wrapper::StartPlay(const std::string&...play->OnWindowSize(widgets.at(i)->width(), widgets.at(i)->height()); } } } 以上是QT环境下集成个低延迟的
Flutter Engine使用C/C++编写,具有低延迟输入和高帧速率的特点,不像Unity3d一样,我们是回调YUV/RGB数据,在Unity3d里面绘制,Flutter直接调用native SDK...其次,客户和开发者驱动,Flutter发展至今,目前还没有个像样的RTSP或RTMP播放器,一个播放器,不是说,有个界面,有个开始、停止按钮就可以了,一个好用的直播播放器,对功能和性能属性要求很高,特别是稳定性和低延迟这块...async { return _smartPlayerCallInt('setFastStartup', isFastStartup); } /// /// 设置超低延迟模式...var is_fast_startup = 1; ret = await player.setFastStartup(is_fast_startup); //是否开启低延迟模式...,拥有Native SDK一样优异的播放体验。
,要么可以让RTMP、RTSP播放模块回调rgb数据上来,在wpf直接绘制即可。...is_player_sdk_init_ = false; } base.OnClosing(e); }延迟依旧毫秒级...]高稳定、超低延迟、业内首屈一指的RTSP直播播放器SDK; [多实例播放]支持多实例播放; [事件回调]支持网络状态、buffer状态等回调; [视频格式]支持H.265、H.264,此外,还支持RTSP...,实时静音/取消静音; [实时音量调节]支持播放过程中实时调节音量; [实时快照]支持播放过程中截取当前播放画面; [只播关键帧]Windows平台支持实时设置是否只播放关键帧; [渲染角度]支持0°,...总结Windows平台下如果需要wpf播放,如果需要更灵活,可以采用回调rgb数据的模式,上层直接绘制,只是低延迟的播放出来画面,采用上述控件模式亦可,除了wpf外,我们提供了C++和C#的接口和demo
背景在比较同一个数据源,是RTMP播放延迟低还是RTSP延迟低之前,我们先看看RTMP和RTSP的区别,我们知道,RTMP(Real-Time Messaging Protocol)和RTSP(Real...它最初由Adobe Systems设计,用于在Flash播放器和流媒体服务器之间传输音频、视频和数据。RTMP以二进制形式传输数据,具有低延迟和高效传输的特点。...应用范围RTMP:RTMP因其低延迟和高效传输的特点,广泛应用于需要高性能实时流媒体传输的场景,如直播、视频聊天等。...,用我们的RTMP推送、轻量级RTSP服务、RTMP|RTSP播放器,延迟基本上相差无几,可见,配好的推拉流服务模块,尤其关键。...单就延迟来看,如果好的RTMP或RTSP播放,二者差异不大,主要是看实际场景。以上是大概的比较,感兴趣的开发者,可以单独跟我沟通探讨。
当然,话说回来,如果是在特定的使用场景下,只需要某些版本IE浏览器支持,但对延迟和稳定性要求非常高,OCX控件方式也不失为一个好的选择。...hls流(如果可以忍受几秒甚至十几秒延迟的话)。...本文基于大牛直播SDK https://github.com/daniulive/SmarterStreaming 现有RTSP、RTMP播放接口的基础上,二次封装,扩展了ocx控件,用于IE浏览器下的低延迟...RTMP或RTSP播放,支持RTMP/RTSP H.265(hevc)播放。...ULONG NT_SetLowLatencyMode(LONG mode); 设置是否低延迟模式播放; 13.
本文接下来介绍可能的延迟优化,从编码,打包,CDN交付以及视频播放器这些过程,通过调整其中的参数,可以为观众提供一个经过精心优化的低延迟直播流。...视频播放器端的延迟优化 现在看一下最重要的延迟改进领域 - 视频播放器的参数,即使在工作流程的上游优化了工作流参数,但这些优化可能会对未集成低延迟导向机制的视频播放器无效。...视频播放器通常经过优化,可为最终用户提供不间断的播放,这意味着播放器会优先考虑缓冲区长度而不是降低流延迟。但并不意味着完全缺乏启用低延迟的选项,而是在每个播放器的初始化设置中默认不启用这些选项。...通常,将缓冲区限制为3或4秒是延迟和播放稳定性之间的合理折衷。低于3秒可以显着改善延迟,但也会影响用户体验,导致在播放期间会发生定期的重复缓冲阶段。...如果利用强制播放头以x切片或延迟x秒开始播放,在播放器设置中设置较低缓冲时间就可能效率比较低。但这是一个补充设置,需要自定义。
在发布国产操作系统|Linux平台的RTMP|RTSP直播播放SDK之前,大牛直播SDK在Windows、Android、iOS平台已经有了非常成熟的技术积累,功能齐全、稳定性高、超低延迟、超低资源占用...、网络自动重连等,RTMP支持扩展H265播放, RTSP也支持H265播放。...Linux原生的RTSP、RTMP播放模块这里我们不做赘述,本文主要讲的是如何在Linux平台构建Unity下的RTSP和RTMP低延迟直播播放。...Unity侧,在Unity下完成绘制,这里就需要原生的RTMP、RTSP播放模块,拉流解码延迟非常低,数据投递效率非常高,无图无真相:Linux平台,我们是回调的YUV的数据,也就是 NT_SP_E_VIDEO_FRAME_FROMAT_I420...1 : 0); //设置是否启用低延迟模式//设置旋转角度(设置0, 90, 180, 270度有效,其他值无效)int rotate_degrees = 0;NTSmartPlayerSDK.NT_SP_SetRotation
低延迟打包器的输出是分块的视频片段和清单文件,通知播放器如何在低延迟模式下使用流。...LL-HLS 播放器实现的比特率和延迟变化的动态分别如图 4 和图 5 所示。...接下来,我们将注意力转移到 LL-DASH 播放器上。这些播放器实现的比特率和延迟变化的动态分别如图 6 和图 7 所示。...LL-HLS 播放器实现的比特率和延迟变化的动态分别如图 8 和图 9 所示。...就像使用 Verizon 跟踪时一样,HLS.js 在整个会话期间具有可变延迟。与其他两个播放器相比,Shaka 播放器具有更低且更稳定的延迟(平均为 7.78 秒)。
在本文之前,我们发布了Unity环境下的RTMP推流(Windows平台+Android平台)和RTMP|RTSP拉流(Windows平台+Android平台+iOS平台)低延迟的解决方案,今天做个整体汇总...Unity环境下RTMP|RTSP播放器 Unity环境下RTMP或RTSP直播播放我们前几年就有发布,并已应用在好多传统行业领域,比如教育或工业仿真或一些低延迟的控制场景。...Native RTSP或RTSP直播播放SDK回调RGB/YUV420/NV12等其中的一种未压缩的图像格式; 2....多实例支持:播放端和推送不一样,比如智慧城市,播放端有多路场景,所以多实例支持是必备功能,多实例环境下,需要能有好的区分event状态回调等; 2....平台下低延迟播放RTMP或RTSP流 https://cloud.tencent.com/developer/article/1592731
技术实现先说播放实现,iOS端,RTMP|RTSP直播播放,我们实现的功能如下: [支持播放协议]高稳定、超低延迟(毫秒级) [多实例播放]支持多实例播放; [事件回调]支持网络状态、buffer状态等回调...H.265硬解; [H.264/H.265硬解码]Android支持设置Surface模式硬解和普通模式硬解码; [缓冲时间设置]支持buffer time设置; [首屏秒开]支持首屏秒开模式; [低延迟模式...]支持低延迟模式设置(公网200~400ms); [复杂网络处理]支持断网重连等各种网络环境自动适配; [快速切换URL]支持播放过程中,快速切换其他URL,内容切换更快; [实时静音]支持播放过程中,...实时静音/取消静音; [实时音量调节]支持播放过程中实时调节音量; [实时快照]支持播放过程中截取当前播放画面; [渲染角度]支持0°,90°,180°和270°四个视频画面渲染角度设置; [渲染镜像]...smart_player_sdk SmartPlayerSetPlayURL:playback_url_]; //[self try_set_rtsp_url:playback_url_]; //超低延迟模式设置
这几年国内外的技术专家经过不断研究总结,形成一些闭源或开源、收费或免费的方案,但多数时候无法完全满足客户的实际需求,要么兼容性和稳定性不好,要么播放延迟高,首屏画面显示慢;尤其是播放高分辨率的RTSP流时...使用ActiveX播放控件或NPAPI播放插件实际调用的是本地原生程序进行直接播放,从而可充分利用本机硬件解码和硬件加速渲染播放,可实现低延迟、低成本多路稳定播放的良好效果。...推送到前端,前端收到后再转换为Video所支持的MP4后播放,这就导致RTSP视频流,需要经过2次转码才播放,画面延迟时间大幅增加,保守估计延迟至少是2-3秒级别了。...此方案同样要求浏览器支持流媒体扩展特性(MSE),对延迟不敏感的单源播放尚可,多路播放就只能洗洗睡了,另外根据一些用户的反馈,对各品牌摄像头的兼容性也不太友好,作为商业用途使用是不可行的。...本文基于当前最新的技术信息和实践经验,提供了这样一个稳定可靠、兼容性好、低延迟又可同时稳定播放多路RTSP的低成本半开源技术方案,尤其适合播放高分辨率的RTSP,以供大家选型参考。
背景我们看过了太多介绍RTSP、RTMP播放相关的技术资料,大多接口设计简约,延迟和扩展能力也受到一定的局限,好多开发者希望我们能从接口设计的角度,大概介绍下大牛直播SDK关于RTMP、RTSP播放器开发设计...加大buffer time,会增大播放延迟,好处是,网络抖动的时候,流畅性更好。...低延迟模式低延迟模式下,设置buffer time为0,延迟更低,适用于比如需要操控控制的超低延迟场景下。...,这里就不再赘述,除Windows平台外,我们还同步开发了Linux、Android、iOS平台的RTSP、RTMP播放器,大多常规接口四个平台基本统一,延迟也都做到了毫秒级。...一个好的播放器,特别是要满足低延迟稳定的播放(毫秒级延迟),需要注意的点远不止如此,感兴趣的开发者,可以参考blog其他文章。
技术实现如何在VR头显实现RTMP或RTSP播放?...("已经在播放。。")...1 : 0); //设置是否启用低延迟模式 NT_U3D_SetMute(player_handle_, is_mute_ ?...player_obj_.Call("SetFastStartup", handle, is_fast_startup); } /// /// 设置超低延迟模式...RTMP或RTSP,可实现毫秒级的延迟,可满足大多数有交互诉求的技术场景,此外,如果头显端支持硬解码的话,可以优先考虑硬解码。
技术背景虚拟现实(VR)技术的互动性和沉浸感,为我们提供了一种全新的视觉体验,不过,如果需要实现真正的沉浸式体验,VR播放的延迟问题非常重要。...如何尽可能降低Unity环境下的直播播放延迟,是摆在我们面前的大问题,目前,硬件厂商也采用一些更加好的传输技术,例如5G网络等高速网络技术,以降低传输延迟。...今天,我们主要介绍的是VR头显下,如何低延迟的实现RTMP或RTSP的播放。技术实现说了这么多,如何在VR头显端,尽可能的降低直播播放延迟呢?...以大牛直播SDK为例,我们在做Unity下RTMP或RTSP直播播放的时候,大多场景对延迟和资源占有要求非常高,鉴于好多时候,特别是头显终端,性能可能不尽人意,需要播放的视频分辨率码率又高,如何高效率的实现低延迟的...RTMP或RTSP播放,是Unity下比较棘手的问题,特别是毫秒级延迟。
领取专属 10元无门槛券
手把手带您无忧上云