本文是上海站 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 在直播应用中的实践的更多相关文章

  1. 直播推流端弱网优化策略 | 直播 SDK 性能优化实践

    弱网优化的场景 网络直播行业经过一年多的快速发展,衍生出了各种各样的玩法.最早的网络直播是主播坐在 PC 前,安装好专业的直播设备(如摄像头和麦克风),然后才能开始直播.后来随着手机性能的提升和直播技 ...

  2. 手游录屏直播技术详解 | 直播 SDK 性能优化实践

    在上期<直播推流端弱网优化策略 >中,我们介绍了直播推流端是如何优化的.本期,将介绍手游直播中录屏的实现方式. 直播经过一年左右的快速发展,衍生出越来越丰富的业务形式,也覆盖越来越广的应用 ...

  3. Golang在视频直播平台的高性能实践

    http://toutiao.com/i6256894054273909249/ 熊猫 TV 是一家视频直播平台,先介绍下我们系统运行的环境,下面这 6 大服务只是我们几十个服务中的一部分,由于并发量 ...

  4. Mysql事务探索及其在Django中的实践(二)

    继上一篇<Mysql事务探索及其在Django中的实践(一)>交代完问题的背景和Mysql事务基础后,这一篇主要想介绍一下事务在Django中的使用以及实际应用给我们带来的效率提升. 首先 ...

  5. 05-雷海林-mysql备份原理与在TDSQL中的实践

    05-雷海林-mysql备份原理与在TDSQL中的实践 下载地址: http://files.cnblogs.com/files/MYSQLZOUQI/05-%E9%9B%B7%E6%B5%B7%E6 ...

  6. ceph在品高云中的实践

    ceph简介 ceph是业界目前人气最高的开源存储项目之一,关于其定义在官网是这样的:"Ceph is a unified, distributed storage system desig ...

  7. 京东云罗玉杰:OpenResty 在直播场景中的应用

    2019 年 3 月 23 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·北京站,京东云技术专家罗玉杰在活动上做了< OpenResty ...

  8. 一致性Hash算法在数据库分表中的实践

    最近有一个项目,其中某个功能单表数据在可预估的未来达到了亿级,初步估算在90亿左右.与同事详细讨论后,决定采用一致性Hash算法来完成数据库的自动扩容和数据迁移.整个程序细节由我同事完成,我只是将其理 ...

  9. 华为云对Kubernetes在Serverless Container产品落地中的实践经验

    华为云容器实例服务,它基于 Kubernetes 打造,对最终用户直接提供 K8S 的 API.正如前面所说,它最大的优点是用户可以围绕 K8S 直接定义运行应用. 这里值得一提是,我们采用了全物理机 ...

  10. React 与 Redux 在生产环境中的实践总结

    React 与 Redux 在生产环境中的实践总结 前段时间使用 React 与 Redux 重构了我们360netlab 的 开放数据平台.现将其中一些技术实践经验总结如下: Universal 渲 ...

随机推荐

  1. python3解析wav文件获取dtmf值

    操作系统 :Windows 10_x64 Python版本:3.9.2 从事FreeSwitch相关工作,大概率会遇得到DTMF,DTMF的传递方式有三种: In-band RFC2833 SIP-I ...

  2. volatile重要特性-可见性,避免指令重排序-案例讲解

    1.背景 volatile 修饰的作用???? 什么是可见性?? 什么是指令重排序?? 2.可见性-案例 package com.my.aqs; /** * @Copyright (C) XXXXX技 ...

  3. CryptoHouse:由 ClickHouse 和 Goldsky 支持的免费区块链分析服务(ClickHouse 博客)

    我们很高兴地宣布 CryptoHouse,在 crypto.clickhouse.com 上可访问,这是一个由 ClickHouse 提供支持的免费区块链分析服务. https://crypto.cl ...

  4. LLM应用实战: 产业治理多标签分类

    1. 背景 许久未见,甚是想念~ 近期本qiang~换了工作,处于新业务适应期,因此文章有一段时间未更新,理解万岁! 现在正在着手的工作是产业治理方面,主要负责其中一个功能模块,即按照产业治理标准体系 ...

  5. C# WebSocket Fleck 源码解读

    最近在维护公司旧项目,偶然发现使用Fleck实现的WebSocket主动推送功能,(由于前端页面关闭时WebSocket Server中执行了多次OnClone事件回调并且打印了大量的关闭日志,),后 ...

  6. 线性dp:最长公共子序列

    最长公共子序列 本文讲解的题与leetcode1143.最长公共子序列这题一样,阅读完可以挑战一下. 力扣题目链接 题目叙述: 给定两个字符串,输出其最长公共子序列,并输出它的长度 输入: ADABE ...

  7. 一文搞懂 == 、equals和hashCode

    面试的时候,经常会被问到==和equals()的区别是什么?以及我们也知道重写equals()时候必须重新hashCode().这是为什么?既然有了hashCode()方法了,JDK又为什么要提供eq ...

  8. 使用inno setup 打包Pyinstaller生成的文件夹

    背景:pyinstaller 6.5.0.Inno Setup 6.2.2 1. 需要先使用pyinstaller打包,生成包括exe在内的可执行文件夹 注意:直接使用pyinstaller打包,生成 ...

  9. C#/.NET/.NET Core技术前沿周刊 | 第 3 期(2024年8.26-8.31)

    前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...

  10. ICMAN触摸滑条滚轮方案

    ICMAN触摸滑条滚轮调光是一种利用触摸技术实现的调光控制方式,是一种更简单.直观且节能的调光方式,有效改善了用户的照明体验,并在智能家居和节能照明领域发挥着重要作用. 基于厦门晶尊微电子(ICMAN ...