KubeSphere 在直播应用中的实践
本文是上海站 Meetup 讲师唐明根据其分享内容整理的文章。
引言
目前媒体的主流传播渠道已从传统的报纸、广播、电视转向了互联网,各种视频及社交 App 成为了人们获取资讯的首选途径。苏州市广播电视总台面对互联网媒体的新形势,不断探索新形势下了信息发布方式、传播途径和相关的 IT 技术,为的是能在新的媒体战场上紧跟时代发展,不断保持领先优势。
技术路径
在 IT 架构选型上,技术团队保持对新技术的关注和实践,通过总结这些年 IT 技术的实践经验,坚信云原生才是云计算时代技术的发展方向。如果仅仅是将物理服务器虚拟化,或者将虚机从本地环境迁移上公有云,并无法完全发挥云计算高效安全可扩展的特性。所以技术团队一直坚持对容器技术进行实践。
2019 年初开始将 Kubernetes 应用于生产环境。在学习 Kubernetes 的过程中接触到了 KubeSphere,在对 KubeSphere 进行了较长时间的测试和验证后,今年开始使用 KubeSphere 管理 Kubernetes 集群。
需求分析
媒体行业最主要的业务系统就是媒体的生产制作系统。媒体生产可以分为媒体采集、媒体处理和媒体分发三个环节。
随着技术的发展,采集设备从原先的专业摄像机发展到了单反、无人机、GoPro、全景摄像机、手机等多种多样的设备均可用于视频拍摄,使得视频拍摄的数量大大增加且格式种类、编码方式、帧率等都变得纷繁复杂。此外媒体的分发渠道也不再仅仅是电视和广播,还有网站、app、公众号、短视频平台等。采集端和发布端的巨大变化对媒体处理能力提出了更高的要求。为了能处理好这些视频文件,业务系统需要提供强大对处理能力,包括视频对编解码、提取视频标签、进行智能处理等。
业务痛点
对媒体文件进行处理的工作难度很大。媒体处理系统需要能够处理海量的、不同拍摄设备、不同视频格式、不同拍摄人员所采集的媒体素材,并且需要为不同的平台提供不同长度、不同类型(横屏竖屏)、不同编码格式、不同码率、不同分辨率的成品视频文件。同时需要对这些素材和成片进行妥善得分类和管理。
于是通过自建一套容器平台,来实现这些视频处理能力。选择容器平台是因为进过评估和分析,认为容器是最适合用于处理媒体文件的技术方式。
- 容器能极大得提高系统的资源利用率,为海量文件的处理提供计算能力;
- 容器平台能提供很好的系统弹性,满足不同时间段不同业务需求的任务运行;
- 容器的标准化镜像便于升级管理和维护,可满足媒体处理能力需不断进行升级;
- 容器能实现跨云的支持,方便将部分热点业务迁移至公有云提供服务;
- 容器平台能充分利用原有的服务器资源而不用担心硬件的兼容性和稳定性问题。
KubeSphere 应用落地
以 “慢看苏州”的直播业务为例,该业务需求是将许多点位监控摄像头信号与指定的音频进行混合,为视频配上背景音乐,再推送至直播平台。在推进这个项目的过程中也经过了几轮测试:首先使用 ffmpeg 实现了视频和音频文件的合成,但由于摄像头数量非常多,且会随时进行调整,维护大量的 ffmpeg 进程并不可行,于是通过 Docker 以容器方式启动编码任务,最终将这些容器统一运行在 KubeSphere 平台上,为一个工作负载对应一个编码任务。
KubeSphere 成效分析
KubeSphere 很方便得实现了编码任务的启动、停止、监控、调度、统计等功能,大大减少了我们运维的工作量,且能及时发现编码过程中的异常,收到了很好的效果。
这只是我们目前的一个尝试,下一步还考虑将更多的视频处理能力迁移至KubeSphere 容器平台,如视频转码、视频优化、人脸识别、语音识别、语音合成、OCR 识别、标签提取、视频水印、视频特征提取等,为媒体生产制作提供更强大的服务支撑。
本文由博客一文多发平台 OpenWrite 发布!
KubeSphere 在直播应用中的实践的更多相关文章
- 直播推流端弱网优化策略 | 直播 SDK 性能优化实践
弱网优化的场景 网络直播行业经过一年多的快速发展,衍生出了各种各样的玩法.最早的网络直播是主播坐在 PC 前,安装好专业的直播设备(如摄像头和麦克风),然后才能开始直播.后来随着手机性能的提升和直播技 ...
- 手游录屏直播技术详解 | 直播 SDK 性能优化实践
在上期<直播推流端弱网优化策略 >中,我们介绍了直播推流端是如何优化的.本期,将介绍手游直播中录屏的实现方式. 直播经过一年左右的快速发展,衍生出越来越丰富的业务形式,也覆盖越来越广的应用 ...
- Golang在视频直播平台的高性能实践
http://toutiao.com/i6256894054273909249/ 熊猫 TV 是一家视频直播平台,先介绍下我们系统运行的环境,下面这 6 大服务只是我们几十个服务中的一部分,由于并发量 ...
- Mysql事务探索及其在Django中的实践(二)
继上一篇<Mysql事务探索及其在Django中的实践(一)>交代完问题的背景和Mysql事务基础后,这一篇主要想介绍一下事务在Django中的使用以及实际应用给我们带来的效率提升. 首先 ...
- 05-雷海林-mysql备份原理与在TDSQL中的实践
05-雷海林-mysql备份原理与在TDSQL中的实践 下载地址: http://files.cnblogs.com/files/MYSQLZOUQI/05-%E9%9B%B7%E6%B5%B7%E6 ...
- ceph在品高云中的实践
ceph简介 ceph是业界目前人气最高的开源存储项目之一,关于其定义在官网是这样的:"Ceph is a unified, distributed storage system desig ...
- 京东云罗玉杰:OpenResty 在直播场景中的应用
2019 年 3 月 23 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·北京站,京东云技术专家罗玉杰在活动上做了< OpenResty ...
- 一致性Hash算法在数据库分表中的实践
最近有一个项目,其中某个功能单表数据在可预估的未来达到了亿级,初步估算在90亿左右.与同事详细讨论后,决定采用一致性Hash算法来完成数据库的自动扩容和数据迁移.整个程序细节由我同事完成,我只是将其理 ...
- 华为云对Kubernetes在Serverless Container产品落地中的实践经验
华为云容器实例服务,它基于 Kubernetes 打造,对最终用户直接提供 K8S 的 API.正如前面所说,它最大的优点是用户可以围绕 K8S 直接定义运行应用. 这里值得一提是,我们采用了全物理机 ...
- React 与 Redux 在生产环境中的实践总结
React 与 Redux 在生产环境中的实践总结 前段时间使用 React 与 Redux 重构了我们360netlab 的 开放数据平台.现将其中一些技术实践经验总结如下: Universal 渲 ...
随机推荐
- 从.net开发做到云原生运维(三)——.net core的学习路线
1. 前言 前面几篇文章主要讲了.net技术相关的基本概念和一些涉及的项目什么,本身也没讲太多底层的技术,这篇文章依旧不讲具体的技术,主要介绍.net技术的学习路线.学习路线也是我18年毕业的时候看到 ...
- 寻路数据集 —— PathFinding数据集 —— Moving AI Lab. 实验室
好几个做pathfinding的论文都是引用这个网站的数据集,不过这个网站的数据集的地图都是 .map 格式,这个类型的格式该如何打开还不知道. Moving AI Lab. 实验室的工作 地址: h ...
- Ubuntu 18.04在已经安装Docker CE后如何安装NVIDIA-Docker,以使docker容器内可以使用宿主机显卡
注意: 本文是在电脑上已经安装好docker环境的前提下进行的. docker环境如何安装参照前文. 本文内容节选自: https://baimafujinji.blog.csdn.net/arti ...
- 局域网中linux和window共享文件方案——samba
注明: 曾经写过:局域网中如何为Ubuntu20.04和window10共享文件,本文可以视作为该篇的续篇. 本文主要内容为Samba软件的安装和配置,以及相关的磁盘操作. 注意:(硬盘的UUID会受 ...
- 解决 jquery attr多次使用失效的问题
今天做一个全选功能的时候用到了jq 的attr 的方法,可是在真正使用的时候首次是可以实现全选和全不选的功能,然而 多点几次就会发勾选的效果消失了!先看下代码吧: <!DOCTYPE html& ...
- MFC制作带界面的DLL库
## MFC如何创建一个带界面的DLL(动态链接库) 1.创建项目 打开VS,文件->新建->项目: 点击确定之后弹出来的界面,点击下一步->选择"使用共享MFC DLL的 ...
- 信创环境:鲲鹏ARM+麒麟V10离线部署K8s和Rainbond信创平台
在上篇<国产化信创开源云原生平台>文章中,我们介绍了 Rainbond 作为可能是国内首个开源国产化信创平台,在支持国产化和信创方面的能力,并简要介绍了如何在国产化信创环境中在线部署 Ku ...
- 9. 从0学ARM Cortex-A9 LED汇编、C语言驱动编写
0. 前言 一般我们购买一个开发板,厂家都会给出对应的电路图文件,我们可以通过搜索对应名称来查找到对应的外设.对于驱动工程师来说,我们只需要知道外设与SOC交互的一些数据线和信号线即可. 用主控芯片控 ...
- 使用分布式锁解决IM聊天数据重复插入的问题
导航 业务背景 问题分析与定位 探索可行的解决方案 数据库层面处理--唯一索引 应用程序层面处理--分布式锁 分布式锁概述 分布式锁需要具备哪些特性? 分布式锁有哪些实现方式? 基于数据库的实现方式 ...
- 本地部署 Overleaf 服务
️ 注意:本教程只适用于 macOS / Linux 操作系统.如果需要在 Windows 上部署 Overleaf,请先安装 WSL,之后在 WSL 中部署 Overleaf . 本地部署 Over ...