技术赋能-混流编排功能,助力京东618直播重保 | 京东云技术团队

每每到618、双11这样的大型活动的时候,每天都有几个重要的大v或者品牌直播需要保障。

以往的重点场次监播方式是这么造的:

对每路直播的源流、各档转码流分别起一个ffplay播放窗口,再手动调整尺寸在显示器桌面进行布局,排到一屏里来监播。

这样做的缺点:

  • 操作复杂,手动调整画面不美观

  • 不同的拉流时间点,起播时间有误差,画面无法协调一致

  • 当拉多路流的时候,带宽也受限制,基本上拉3-4个2m码率以上的流本机就会卡顿了,此时如果流有问题,就不能准确判断卡顿来源了,检查起来也比较费劲

展示方式是这样的:

ffplay 'rtmp://stream1' & ffplay 'rtmp://stream2' & ffplay 'rtmp://stream3' & ffplay 'rtmp:/stream4' & ffplay 'rtmp://stream5' & ffplay 'rtmp://stream6' & ffplay 'rtmp://stream7' & ffplay 'rtmp://stream8'

PS:这么多的窗口,点着是挺麻烦的😓

在我们混流生产层能力完备后,就开始琢磨怎么将它赋能在平常或者大促的直播间重保上,同时也为了更加专业、更高效的进行监播,经过了一段时间的打磨,提炼了一个简单的混流编排功能。

它的工作模式是这样的:

在这里你可以创建混流任务,并支持你在不断流的状态下做到更新任务输入信息。

将要监播的直播流地址,需要展示的文字内容、布局方式、混流输出的模板配置进行下发,就可以拉到自动编排好的直播流地址。

它现在长这个样子:

最终呈现出来的混流的效果是这样的😁:

也可以是这样的:

也可以呈现其他的布局方式,目前还没做的那么丰富,不过底层能力和api接口是都支持的,完全灵活布局。

在混流任务运行过程中,可以自由修改混流输入源的配置。

这种新型的监播方式,可以直观的区分源流、各档转码流的播放效果:画面内容是否正常,有无花屏、是否卡顿?

当出现问题时能够指导我们快速做出决策:

  • 转码流有问题,源没有问题,快速排查任务日志,定位是什么原因导致

  • 转码流有问题,源也有问题,迅速问题源流的流详细信息,定位问题并通知业务方进行操作

  • 主流都有问题,备流没问题,通知业务方迅速切备流

还有其他的一些有点:

  • 操作简单方便,还可以记忆配置,下次直接修改

  • 每个播放端只需拉一路流,节省本地带宽

  • 最多可以支持16路混流,一屏监播16路流的画面

  • 不断流,轻松切换各种布局

  • 不断流,随便操作流的添加、删除、修改

  • 方便分享给其他人进行播放

混流布局功能的底层实现框架:

  • 定义通用的layout布局结构-BasicClip
{
    ClipType string `json:"clipType"`
	LeftMargin int `json:"leftMargin"`
	PosX *int `json:"posX"`
	PosY *int `json:"posY"`
	Width int `json:"width"`
	Height int `json:"height"`
}

在此基础上扩展出更丰富的BorderClip, TextClip, ImageClip等类型,来满足不同的布局元素设计。

  • 定义通用的videoMask结构,它可以包含多个clip interface, 即各种clip元素,在videoMask中各个clip是同一个layer的,只允许在限定的尺寸中进行布局。
type VideoMask struct {
	Layer int `json:"layer"`
	Clips []interface{} `json:"clips"`
}
  • 每个输入的视频流,可以包含多个videoMask,多个videoMask在最终overlay的时候,按定义的layer先后顺序进行铺叠,以达到最终的预期视频布局效果。

应用场景拓展

  • 什么情况下使用混流?

◦当设备不支持同时拉多路流时使用混流,比如sip入会的场景。

◦需要多个视频画面、多个音频流合成一个直播流时使用混流,比如会议录制(rtc协议)场景、教育类场景(直播老师和学生的画面)、直播连麦的场景等。

总结:此次能在618重保期间发挥它的价值,也算是有所得。希望以后可以在日常直播、展会等其他重要直播活动中发挥作用。关于混流的产品介绍以及更多的使用场景也会在后续的文章中一一展开,敬请期待。

作者:京东科技 孟晓伟

来源:京东云开发者社区

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/26913.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

怎么用u盘制作pe系统启动盘

PE系统是一种小型的windows系统,通俗的说法也就是在电脑出现问题不能正常进入系统时的一种紧急备用系统。它容量小能量大,可以解决win系统中经常遇到的一些问题,对于经常使用电脑的用户来说,制作一个pe系统启动盘放在身边是很有必…

C++11:右值引用,实现移动语义和完美转发

目录 1、右值引用 2、移动语义(std::move) 3、完美转发(std::forward) 1、右值引用 右值引用(Rvalue reference)是C11引入的一个新特性,它是一种新的引用类型,用于表示将要被移动…

接口测试 —— 接口测试定义

1、接口测试概念 (重点) 接口测试是测试系统组件间接口的一种测试,它界于单元测试与系统测试中间。 接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。 测试的重点是要检查数据的交换,传递和控制管理过…

浅入浅出 iptables 网络隔离原理

01 iptables简介 iptables ipfirewall(内核1.x时代) ipchains(内核2.x时代) iptables 网络协议栈 Link Layer 数据链路层的数据流向,根据mac寻址找到对应的网卡后向上进入网络层 Network Layer 网络层的数据流向&am…

磁盘配额与进阶文件系统管理(一)

磁盘配额Quota 用途 针对www server,例如 每个人网页空间的容量限制;针对mail server,例如 每个人的邮件空间限制;针对file server,例如 每个人最大可用的网络硬盘空间;限制某一群组所能使用的最大磁盘空…

ArrayList源码

介绍 ArrayList非线程安全。ArrayList基于动态数组,是一种线性表。随机访问友好,插入和删除效率低。 ​ 增删慢:每次删除元素,都需要改变数组长度、拷贝以及移动数组长度 ​ 查询快:由于数组在内存中是一块连续空间…

中国计算机学会CCF推荐的国际会议(图像处理方向)

CCF推荐的国际会议(医学图像处理方向) 1 介绍2 最新目录3 投了会议可以再投期刊吗?4 个人感想 1 介绍 CCF根据论文的质量和影响力,对国际期刊和国际会议进行了评估和分类,以便研究者在选择发表论文或参与学术交流时有…

94.构建样品餐部分第二节

上节课完成的页面是这样的 ● 之后我们设置一下图标 .meal-attribute {font-size: 1.8rem;font-weight: 500;display: flex;align-items: center;gap: 1.6rem; }.meal-img {width: 100%; }.meal-icon {height: 2.4rem;width: 2.4rem;color: #e67e22; }● 为了突出这些参数的…

CDH 之 hive 升级至 hive-3.1.3 完美踩坑过程

一、准备工作 1.1 前言 这是博主在升级过程中遇到的问题记录,大家不一定遇到过,如果不是 CDH 平台的话,单是 hive 服务升级应该是不会有这些问题的,且升级前博主也参考过几篇相关 CDH 升级 hive 服务的博文,前面的升级…

Java实现LL1语法分析器【编译原理】

java通过预测分析法实现语法分析程序【编译原理】 前言推荐实验要求需知LL1工作原理 Java实现LL1语法分析器0实验步骤LL1.javaGrammar.javaLeftRecursion.javaFirstAndFollow.javaAnalyzeTable.javaLL1Stack.java实验结果 Java实现LL1语法分析器1Grammar.javaProduction.javaFi…

Neo4j安装配置教程

目录结构 前言Neoj4简介安装JDKNeo4j安装步骤Neo4j下载解压Neo4j压缩包配置环境变量启动Neo4j执行命令报错,报错信息如下: 启动Neo4j,再次测试浏览器访问Neo4j参考链接 前言 安装所需配件网盘一键下载。以下描述中,官网下载均有描…

5.3图的综合应用算法

一.最小生成树算法 1.概念(Minimum-Spanning-Tree)MST 生成树:针对于连通图,包含全部顶点,去掉一条边后不连通,加一条边形成环 最小生成树:带权连通无向图,边的权值之和最小的生成树(MST) 2.…

基于LPP算法实现MNIST数据集降维

目录 1、作者介绍2、LPP算法简介2.1 基本概念及原理2.2 算法流程 3、LPP算法实现3.1 数据集简介3.2 代码实现3.2.1 完整代码3.2.2 运行结果 4、参考链接 1、作者介绍 刘晨雨,男,西安工程大学电子信息学院,2022级研究生 研究方向:…

Tomcat部署

Tomcat 一、Tomcat什么是 servlet?什么是 JSP?Tomcat 功能组件结构:Container 结构分析:Tomcat 请求过程: 二、Tomcat服务部署三、虚拟主机配置四、Tomcat多实例部署 Tomcat 是 Java 语言开发的,Tomcat 服务器是一个免…

前端录制回放rrweb

rrweb 是 ‘record and replay the web’ 的简写,旨在利用现代浏览器所提供的强大 API 录制并回放任意 web 界面中的用户操作。 rrweb中文文档 https://github.com/rrweb-io/rrweb/blob/master/guide.zh_CN.md 本文项目地址 https://github.com/qdfudimo/vue-rrweb…

目标检测算法:YOLO v1论文解读

目标检测算法:YOLO v1论文解读 前言 ​ 其实网上已经有很多很好的解读各种论文的文章了,但是我决定自己也写一写,当然,我的主要目的就是帮助自己梳理、深入理解论文,因为写文章,你必须把你所写的东西表达清…

深入了解Java虚拟机之高效并发

目录 Java内存模型与线程 概述 硬件的效率与一致性 Java内存模型 主内存与工作内存 内存间交互操作 对于volatile型变量的特殊规则 原子性、可见性与有序性 先行发生原则 Java与线程 线程实现 线程调度 状态切换 小结 线程安全与锁优化 概述 线程安全 Java中…

简单的UDP网络程序·续写

该文承接文章 简单的UDP网络程序 对于客户端和服务端的基本源码参考上文,该文对服务器润色一下,并且实现几个基本的业务服务逻辑 目录 demo1 第一个功能:字典翻译 初始化字典 测试代码:打印 字符串分割 客户端修改 成品效果…

AI宝典:AI超强工具大整合

😄😄个人介绍 光子郎.进行开发工作七年以上,目前涉及全栈领域并进行开发。会经常跟小伙伴分享前沿技术知识,java后台、web前端、移动端(Android,uniapp,小程序)相关的知识以及经验体…

C#发送邮箱设置及源码

用C#调用发送邮箱代码之前需要邮箱开通SMTP/POP3及设置授权码,开通及获取方法如下: 1、打开邮箱,登录邮箱,进入设置-》帐户 2、在“帐户”设置中,找到服务设置项,进行设置,如下…