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

news2024/11/16 7:48:27

每每到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重保期间发挥它的价值,也算是有所得。希望以后可以在日常直播、展会等其他重要直播活动中发挥作用。关于混流的产品介绍以及更多的使用场景也会在后续的文章中一一展开,敬请期待。

作者:京东科技 孟晓伟

来源:京东云开发者社区

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue使用prerender-spa-plugin做预渲染,用于SEO优化相关内容

原因:像vue、react、angular开发的都是spa应用,他只有一个页面index,他们都是内加载,动态加载切换路由的,所以你再多页面百度蜘蛛只能爬到首页 1.解决方案 (1)vue.js官网提供的 SSR(服务端渲染) 这种方案呢学习成本高,对于刚开始的新手来说可能有点难度,基本还得重…

WTN6040-8S语音播报芯片在抽油烟机上的应用- 提升厨房智能化体验

在当今快节奏的生活中,智能家居技术的发展不仅为我们的生活带来了便利,更为我们的家庭安全和舒适提供了全新的解决方案。作为现代厨房的关键设备,油烟机在净化空气、排除异味和保护家庭健康方面起着重要的作用。而加入WTN6040-8S语音播报芯片…

如何配置IP地址

一.自动获取IP 1.dhclient 2.ifconfig 通过这个命令可以查看系统有几块网卡和网卡的IP。 如果您的Linux有多块网卡,那么在Linux中它会显示成eth1, eth2 依此类推 二.手动配置IP 如果您的虚拟机不能自动获取IP,那么只能手动配置,配置方法为&am…

项目管理用什么工具?甘特图给你答案

在项目管理中,项目的实施需要制定一个完善的项目计划。然而,在实际的项目管理工作中,计划变化快,总会产生各种问题和突发状况,导致管理问题层出不穷。 例如,项目团队人数多,团队协作混乱&…

SOP电子作业指导书系统SaaS部署及应用分析

随着互联网技术的不断发展,越来越多的企业开始采用SaaS(Software as a Service)模式来部署和应用各种软件系统。其中,SOP电子作业指导书系统是一种非常实用的工具,可以帮助企业有效地管理和指导员工的工作。 SOP电子作…

python实现简单的多机并行调度

场景说明 我们有10个任务需要主动发送到3台机器上并行执行,某一台机器执行完成再为此机器分配下一个任务 方案一:消息队列(被动调度) 此方案可以使用celeryredis实现简单的生产者消费者模型,步骤如下: …

关于单片机的时钟浅谈及STM32F103/F030单片机的内外时钟切换问题

绪论 本文主要讲解单片机的时钟系统的相关知识,并进行超频测试,同时介绍如何在STM32F0单片机上进行内外时钟的切换,在不使用外部晶振或者外部晶振不启动时自动切换内部时钟的方法。 一、杂谈 问题来源于群里的一次问答: 诚然&…

Flatpickr教程:使用JavaScript快速创建一个自定义日期选择器

部分数据来源:ChatGPT 引言 如果您是一个网站开发者,想为自己的网站添加方便易用的日期选择对话框,那么Flatpickr日期选择对话框可能正好符合您的需要。在这篇文章中,我们将详细介绍如何使用Flatpickr日期选择对话框&#xff0c…

容器集群管理工具 Docker Swarm

前言 《了解和使用Docker》中有提到容器编排工具 docker compose ,不过只限于单机。如果现在需要搭建一个集群环境,提供了10台服务器用来部署应用以及其依赖的组件,比如5个 Tomcat 应用容器、3个Redis、5个 Mysql、3个 Nginx ,你…

Share Creators Ada Liu 与 VNG Christopher. Liu C出席 2023 全球游戏产业峰会

夏日将至,第二十届中国国际数码互动娱乐展览会(ChinaJoy)将于 2023 年 7 月 28 日至 7 月 31 日在上海新国际博览中心隆重举办。 本届 ChinaJoy 将带来多场重磅主题高端会议,其中全球游戏产业峰会将于 7 月 29 日在上海浦东嘉里大…

网安大佬常用的10大工具

从事网络安全工作,手上自然离不开一些重要的网络安全工具。今天,分享10大网络安全工具。 一、Kali Linux Kali 是一个基于 Debian 的 Linux 发行版。它的目标就是为了简单:在一个实用的工具包里尽可能多的包含渗透和审计工具。Kali 实现了这…

互联网大厂面试必备——1685页《Java 面试突击核心手册,二十大专题,覆盖2000道 Java后端核心面试解析

前言 不论是校招还是社招都避免不了各种面试。笔试,如何去准备这些东西就显得格外重要。不论是笔试还是面试都是有章可循的,我这个有章可循‘说的意思只是说应对技术面试是可以提前准备。 运筹帷幄之后,决胜千里之外!不打毫无准备的仗,我觉…

HikariCP:一个叫光的JDBC连接池

文章目录 简介数据库连接池C3P0DBCPBoneCP 精简的设计字节码优化ArrayList-->FastListConcurrentBag代理实现Statement CacheScheduler quantaCPU缓存行失效 优雅的实现获取连接初始化池对象连接池管理连接池扩充连接池缩容连接池关闭 ConcurrentBag 连接池参数总结参考 简介…

网络协议分析:网络性能的防御工具

作为网络管理员知道管理不断发展的 IT 环境需要付出巨大的努力。无论是对于小型还是大型企业,管理网络以使其可访问并使其性能有效都需要一套监控策略和工具。大多数 IT 管理员需要协议分析器来识别潜在的网络风险并帮助排除故障。与传统分析不同,协议分…

PPT中彩虹线-变色线是怎么画出来的?

​ 效果 上面用箭头指出的线框处,各位可以看到这种有多种颜色组成的渐变的就叫彩虹线 彩虹线是怎么设置的? 请看下面的操作步骤 此处,请单击选中你要变色的线,然后我们点击鼠标右键,在弹出的菜单中选择“设置形状格式" ​ 然后你会在PPT右边得到这样的一个界面…

脑机接口 | 面向步态神经电生理研究的非人灵长类模型与系统

近期,海南大学生物医学工程学院脑机芯片神经工程团队在Frontiers in Neuroscience期刊上发表了题为《面向步态&神经电生理研究的非人灵长类模型与系统》的学术论文。海南大学生物医学工程学院梁丰研副教授为第一作者,殷明教授为通讯作者。海南大学为…

2023年上半年软件设计师试题及答案解析

请点击↑关注、收藏,本博客免费为你获取精彩知识分享!有惊喜哟!! 计算机中,系统总线用于 (1) 连接。 (1) A. 接口和外设 B. 运算器、控制器和寄存器 C. CPU、主存及…

经典面试题---【第一档】

1.如果你想new一个Quene,你有几种方式?他们之间的区别是什么? 2.Redis 是如何判断数据是否过期的呢? Redis 通过一个叫做过期字典(可以看作是 hash 表)来保存数据过期的时间。过期字典的键指向 Redis 数据…

R语言脚本:关于 TissueEnrich包 得到的组织特异性基因富集结果的进一步处理

1. 说明 (来自官方文档): The TissueEnrich package is used to calculate enrichment of tissue-specific genes in a set of input genes. Tissue-specific genes were defined by processing RNA-Seq data from the Human Protein Atlas (HPA) (Uhln et al. 2015…

HttpServlet概述

HTTP协议包括: 请求协议:浏览器向WEB服务器发送数据的时候,这个发送的数据需要遵循一套标准,这套标准中规定了发送的数据具体格式。 相应协议:WEB服务器向浏览器发送数据的时候,这个发送的数据需要遵循一套标准,这套标准中规定了发…