写点什么

电影行业提升 DCP 传输效率,还能这样做!

  • 2020-03-19
  • 本文字数:1781 字

    阅读完需:约 6 分钟

电影行业提升 DCP 传输效率,还能这样做!

一、背景

DCP 全拼是 Digital Cinema Package,中文是数字电影包,用于存储和转换数字影像的音频、图像和数据流,是影院放映设备使用的媒体文件包。一部普通 2D 电影的 DCP 大小一般在 40G~60G 之间,一部普通 3D 电影要乘以 2 倍,如果是 IMAX 或者 4k 的电影,DCP 的大小达到 200G 以上也是正常的。


本文揭秘超过 200G 的超大数字电影包如何高效通过 TMS 传输到各个影厅。


现在影院拷贝 DCP 到各影厅的方式主要是使用 TMS(影院放映管理系统)的传输影片功能,由 TMS 负责把 DCP 传输到各个影厅,但是这种传输的效率不高,数据源只有 TMS,所以各影厅拷贝影片都要到 TMS 上拉取,带宽就成为了瓶颈。



(图 1 目前使用 TMS 向播放服务器传输 DCP 的模式)

二、使用类 P2P 方式传输

从图 1 可以看出,影厅的播放服务器拉取 DCP 后,它们的带宽就处于空闲状态,那么我们完全可以使用类似于 P2P(对等网络传输)传输方式解决,这样就可以用现有设施提高影院内 DCP 的分发效率,起到降本提效的效果。



(图 2 P2P 示意图)


根据上面的 P2P 方式,改造影院内传输 DCP 的模型:



(图 3 改进后的 TMS 向播放服务器传输 DCP 的模式)


上图主要叙述的是传输协调器协调各个影厅寻找传输源拉取 DCP 的过程。本改进方案的特点是增加了一个传输协调器作为共享状态机,协调各影厅拷贝 DCP 的路径,计算出传输路径最优解。传输协调器的核心功能是:


1)收集各厅播放服务器网络情况;


2)标记 DCP 在各厅播放服务器的存储情况;


3)根据网络情况,计算并派发传输任务到各厅播放服务器。


而且使用了本方案的传输方式,传输效率会有极大的提升。例如有一个 DCP 的文件总大小为 400GB,总共 10 个影厅,带宽为 1000Mbps≈125MB/s,那么使用传统 TMS 传输方式,起码要 400×1024×10÷125÷60÷60=9.10 小时,差不多一个工作日的时间。而如果使用新方式,仅需要 3 小时,可以提升 3 倍,而且随着影厅的增多,效率提升指数增加。

三、进一步改进方案

由图 3 了解到,虽然上述方案把带宽浪费的问题解决了,但是架构上还有一些问题:传输协调器就是一个单点,它挂了,传输就出问题了;数据只能有一个数据来源,来源挂了,传输就停止了,而且重新传输要从头开始。这时候我们要如何解决?


这两个问题可以使用传输协调器去中心化部署及文件分片断点续传方式下载解决:


1.传输协调器去中心化部署


我们可以把传输协调器部署到各个影厅,每个传输协调器是一个几乎无状态节点,节点之间无任何信息同步,每当一个影厅的 DCP 传输完成后,就广播到各个传输协调器中。但发送拷贝指令的方式就需要改造一下,由 TMS 统一发送下载影片的指令到各个影厅的传输协调器,然后传输协调器就负责询问邻近节点是否有可下载的 DCP,存在则下载,不再需要 TMS 的传输协调器为影厅指定下载地址。新的网络拓扑图如下:



(图 4 进一步改进后的网络拓补图)


2.文件分片断点续传方式下载 DCP


上一节的方案中,拷贝 DCP 还是使用播放服务器原生指令操作的,限制很大,不支持多数据源及文件分片操作。既然播放服务器不支持,那么我们就需要自己开发一个中介角色,需要支持多数据源及文件分片操作,并且具备拷贝 DCP 到播放服务器硬盘的能力,而部署在影厅的传输协调器恰好可以承担这个职责。多数据源及文件分片方案示意图如下:



(图 5 多数据源及文件分片方案示意图)


上述两种技术方案可以合并使用。


小结:虽然这种方式并不能提升多大的速度,但是在系统容错性方面有所提升,用户体验更好了。

四、总结

通过上述章节可以看出,我们通过将 P2P、FTP、断点续传、文件分片等技术的融合,产生了一个专用于局域网传输 DCP 的技术方案。我们借鉴 P2P 的思想,实现了影厅的片源在局域网内共享的效果,克服了传统 TMS 传输 DCP 单数据源的缺点;使用 FTP 作为传输手段,兼容现有影厅的传输模式;使用断点续传、文件分片提升系统的容错性。


这个方案其实是很典型的组合创新法,用的技术都是已有并且是很经典的,但通过将它们重新梳理整合,使其在性能上发生质的变化,以产生出新的价值。本文的方案正是使用这种方法诞生的,在设计这个方案的过程中,我也学会了组合创新法的一些皮毛,以后还要继续努力学习这种方法。


作者介绍


阿里文娱开发工程师 雨衡


相关阅读


电影垂直行业的云智开放平台如何炼成?


阿里工程师带你了解 B 端垂类营销中心如何设计?


云智前端技术如何赋能场馆院线?


60 秒售出 5 万张票!电影节抢票技术揭秘


2020-03-19 10:001186

评论

发布
暂无评论
发现更多内容

架构实战营 第 6 期 模块二课后作业

火钳刘明

#架构实战营 「架构实战营」

模块2作业

KennyQ

一文读懂Linux内核进程调度原理

简说Linux内核

内存管理 Linux内核 进程管理 驱动开发 嵌入式开发

浅析基于Linux下的调度类分析(代码演示)

简说Linux内核

内存管理 Linux Kenel Linux内核 进程管理 嵌入式开发

Go 实现 WebSockets:2. 如何在 Go 中创建 WebSockets 应用程序

宇宙之一粟

Go 语言 web socket 4月月更

全链路压测(九):容量评估和容量规划

老张

性能测试 全链路压测 稳定性保障

2022第13周-技术分享记事

李印

随笔 工作经验

Python 中有什么不容易让人察觉的有趣的事实?

Jackpop

8000字长文图解String,这次彻底搞懂了

Jackpop

手写实现分布式锁

Linux服务器开发

分布式锁 协程 定时器 后端开发 Linux服务器开发

从单机定时到多层分发

程序员小航

Java 定时任务 XXL-JOB

在终端中使用 GitHub Personal Access Token 访问仓库

信号量

内存是什么?一文搞懂内存是怎么实现的

简说Linux内核

内存管理 Linux内核 嵌入式开发 设备驱动

微信朋友圈的高性能复杂度

锎心😌😌😌

音视频&流媒体的原理以及基础入门知识

玩转音视频技术

Linux SRS 音视频开发 流媒体开发

CRMEB多商户后台前端代码打包并更新打包的代码到项目里面教程详解

CRMEB

每位互联网人才都应该明白怎么通过XSS获取cookie

喀拉峻

网络安全 安全 信息安全

微服务分布式事务处理

俞凡

架构 微服务

C/C++程序员黄金方向-音视频基础知识和ffmpeg编译

玩转音视频技术

HLS SRS 音视频开发 流媒体开发 C/C++程序员

LotusDB 设计与实现—1 基本概念

roseduan

Go 数据库 存储

框架中的自定义网关

Rubble

4月日更

茴字有四种写法,HTAP呢?

MatrixOrigin

数据库 MatrixOrigin MatrixOne 矩阵起源 超融合数据库

C++内存池的简单原理及实现(纯代码解析)

简说Linux内核

Linux服务器开发 Linux内核 驱动开发 嵌入式开发

DIKW金字塔,AI爬到第几层了?

脑极体

软件设计模式:桥接模式

正向成长

设计模式 桥接模式

编程新手如何提高编程能力?

Jackpop

python中self与__init__怎么解释能让小白弄懂?

Jackpop

网络安全之红蓝对抗实战

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

mass哈希娱乐游戏Dapp开发搭建

薇電13242772558

区块链

MongoDB的原理、基本使用、集群和分片集群

神农写代码

linux之tree命令

入门小站

电影行业提升 DCP 传输效率,还能这样做!_文化 & 方法_阿里巴巴文娱技术_InfoQ精选文章