نمونه‌کارها/Web App
AVENA · PROJECT DOSSIER

طراحی و توسعه پلتفرم استریم فیلم و سریال چندپلتفرمی

یک هسته استریم؛ تجربه یکپارچه روی وب، موبایل و تلویزیون

طراحی و توسعه معماری یک پلتفرم استریم فیلم و سریال با بک‌اند Go، پردازش FFmpeg، HLS و MPEG-DASH، CDN، اپ‌های Android و iOS، Android TV و PWA؛ همراه با DRM، مانیتورینگ و زیرساخت Kubernetes.

صنعترسانه، سرگرمی و استریم ویدیونوع پروژهپلتفرم VOD / OTT چندپلتفرمیتمرکزمعماری و توسعه Backend · طراحی زیرساخت پردازش و استریم ویدیو
نمای پلتفرم استریم فیلم و سریال روی تلویزیون، موبایل، آیفون و PWA
Web Appطراحی و توسعه پلتفرم استریم فیلم و سریال چندپلتفرمی
خدمات انجام‌شده
معماری و توسعه Backendطراحی زیرساخت پردازش و استریم ویدیوتوسعه اپ Android و Android TVتوسعه اپ iOS و iPadOSتوسعه PWA و وب‌اپلیکیشنطراحی پنل مدیریتDevOps، مانیتورینگ و CI/CD
تکنولوژی‌ها
GoPostgreSQLRedisNATS / KafkaFFmpegS3-Compatible Object StorageHLSMPEG-DASHCloudflare CDN / AWS CloudFrontKotlinJetpack ComposeMedia3 / ExoPlayerWidevineCompose for TVSwiftSwiftUIAVPlayerFairPlayNext.jsReactTypeScriptTailwind CSSShaka PlayerDockerKubernetesNginxPrometheusGrafanaSentryGitHub Actions / GitLab CI

یک پلتفرم، چند تجربه؛ از موبایل تا تلویزیون

این پروژه یک پلتفرم استریم فیلم و سریال چندپلتفرمی است که تجربه تماشا را روی وب، موبایل، تبلت و تلویزیون پوشش می‌دهد. مسئله فقط ساخت یک Player نبود؛ Backend، پردازش ویدیو، Storage، CDN، DRM، اپ‌های Native، PWA، پنل مدیریت، مانیتورینگ و استقرار باید به‌عنوان یک زنجیره واحد طراحی می‌شدند.

خروجی معماری به‌گونه‌ای در نظر گرفته شده که هر کلاینت تجربه متناسب با دستگاه خودش را داشته باشد، اما منبع داده، کاتالوگ محتوا، وضعیت تماشا و قواعد سرویس در یک هسته مشترک مدیریت شوند.

Backend؛ هسته Go برای کاتالوگ، کاربر و جریان‌های بلادرنگ

هسته Backend با Go طراحی شده و داده‌های پایدار در PostgreSQL نگهداری می‌شوند. Redis برای Cache و داده‌های پرتکرار در معماری حضور دارد و NATS یا Kafka برای جریان‌های Event-driven و ارتباط غیرهمزمان بین سرویس‌ها در نظر گرفته شده است.

این تفکیک کمک می‌کند عملیات سنگینی مانند پردازش ویدیو، اعلان تغییر وضعیت Job یا هماهنگی بین سرویس‌ها از Request مستقیم کاربر جدا بمانند و هر بخش مستقل‌تر مقیاس بگیرد.

Video Processing؛ از فایل اصلی تا نسخه‌های آماده استریم

فایل ورودی مستقیماً برای پخش نهایی مصرف نمی‌شود. FFmpeg در Pipeline پردازش، مسئول Transcode و آماده‌سازی خروجی‌های مناسب برای دستگاه‌ها و کیفیت‌های مختلف است. خروجی‌ها در قالب‌های HLS و MPEG-DASH بسته‌بندی می‌شوند تا Player بتواند با توجه به کیفیت شبکه و توان دستگاه، نسخه مناسب را انتخاب کند.

فایل‌های ویدیویی و Segmentها روی S3-Compatible Object Storage نگهداری می‌شوند و برای توزیع در مقیاس، مسیر تحویل محتوا از طریق Cloudflare CDN یا AWS CloudFront طراحی شده است.

Adaptive Streaming؛ کیفیتی که با شبکه کاربر تطبیق پیدا می‌کند

پخش Adaptive به این معناست که کاربر مجبور نیست از ابتدا یک کیفیت ثابت را انتخاب کند. Player می‌تواند براساس Bandwidth و شرایط لحظه‌ای دستگاه بین Renditionهای مختلف جابه‌جا شود. در وب و PWA از Shaka Player، در Android و Android TV از Media3 / ExoPlayer و در اکوسیستم اپل از AVPlayer استفاده می‌شود.

این معماری، پایه تجربه‌ای روان‌تر روی اینترنت‌های متفاوت و صفحه‌نمایش‌های مختلف است و وابستگی منطق اصلی پخش به یک Client واحد را کاهش می‌دهد.

DRM؛ Widevine برای Android و FairPlay برای Apple

برای محتوای محافظت‌شده، معماری DRM در سطح Client و Streaming دیده شده است. نسخه‌های Android و Android TV از Widevine و نسخه iOS / iPad از FairPlay استفاده می‌کنند. این لایه در کنار Tokenها، مجوز پخش و قواعد دسترسی محتوا قرار می‌گیرد.

هدف از این طراحی، جداکردن امنیت محتوای ویدیویی از رابط کاربری و جلوگیری از وابستگی به رفتار یک Player خاص است.

Android و Android TV؛ دو تجربه Native با یک هسته فنی مشترک

اپ Android با Kotlin + Jetpack Compose و پخش ویدیو با Media3 / ExoPlayer طراحی شده است. نسخه Android TV نیز با Kotlin + Compose for TV توسعه می‌یابد تا Focus navigation، کنترل از راه دور و الگوی استفاده در فاصله دور از نمایشگر به‌صورت Native مدیریت شوند.

Widevine در هر دو Client اندرویدی برای محتوای DRM استفاده می‌شود، اما UI موبایل و TV به‌دلیل تفاوت الگوی تعامل، مستقل طراحی شده‌اند.

iOS و iPad؛ SwiftUI، AVPlayer و FairPlay

کلاینت اپل با Swift + SwiftUI طراحی شده و AVPlayer مسئول Playback است. برای محتوای محافظت‌شده، FairPlay در معماری این Client قرار دارد. ساختار رابط برای iPhone و iPad قابل تطبیق است و رفتارهای پخش با الگوهای Native اکوسیستم اپل هماهنگ می‌شوند.

PWA و Web؛ تجربه کامل با Next.js و Shaka Player

نسخه وب به‌صورت PWA با Next.js، React، TypeScript و Tailwind CSS طراحی شده است. Shaka Player پخش HLS / MPEG-DASH را در لایه وب مدیریت می‌کند و تجربه کاربر از جست‌وجو و کاتالوگ تا جزئیات محتوا، لیست تماشا و ادامه پخش در همان محصول یکپارچه می‌شود.

PWA امکان ارائه تجربه App-like را بدون وابستگی کامل به نصب Native فراهم می‌کند و در عین حال با Backend مشترک پروژه کار می‌کند.

تجربه محصول؛ پروفایل، لیست تماشا و ادامه تماشا

در طراحی رابط، تجربه سرویس فقط به صفحه پخش محدود نشده است. پروفایل‌های مجزا برای اعضای خانواده، لیست تماشا، بخش در حال تماشا برای ادامه محتوا، جست‌وجو، دسته‌بندی و مسیرهای فیلم و سریال بخشی از تجربه اصلی هستند.

در کلاینت‌های پشتیبانی‌شده، دانلود و تماشای آفلاین نیز در معماری محصول دیده شده و سرویس از سناریوی چند زبان، صوت و زیرنویس پشتیبانی می‌کند.

Admin Panel؛ کنترل محتوا و عملیات از یک پنل اختصاصی

پنل مدیریت با Next.js + TypeScript طراحی شده تا مدیریت کاتالوگ، اطلاعات فیلم و سریال، دسته‌بندی‌ها، کاربران، وضعیت محتوا و عملیات مرتبط با انتشار از یک محیط متمرکز انجام شود.

پنل از Clientهای مصرف‌کننده جداست؛ بنابراین تغییرات مدیریتی بدون وابستگی به انتشار نسخه جدید اپ‌ها قابل اعمال هستند.

زیرساخت؛ Docker، Kubernetes و Nginx

سرویس‌ها به‌صورت Container با Docker بسته‌بندی می‌شوند و Kubernetes برای Orchestration، مقیاس‌پذیری و مدیریت Deployment در نظر گرفته شده است. Nginx نیز در لایه ورودی و Reverse Proxy زیرساخت نقش دارد.

این ساختار امکان جداسازی Backend، Workerهای پردازش، پنل و سرویس‌های جانبی را فراهم می‌کند تا هر بخش متناسب با بار واقعی خودش مدیریت شود.

Monitoring؛ دید کامل روی سرویس، خطا و عملکرد

برای Observability، Prometheus جمع‌آوری Metricها، Grafana داشبوردهای مانیتورینگ و Sentry ردیابی خطاهای اپلیکیشن را پوشش می‌دهند. این لایه برای پلتفرم ویدیویی اهمیت زیادی دارد؛ چون اختلال می‌تواند در Backend، پردازش، CDN یا یکی از Clientها رخ دهد.

CI/CD؛ انتشار قابل تکرار برای چند Client و چند سرویس

Pipeline انتشار با GitHub Actions یا GitLab CI طراحی می‌شود تا Build، Test و Deployment سرویس‌ها تکرارپذیر باشند. در پروژه‌ای با Backend، Worker، Web، Android، Android TV و iOS، جدا بودن Pipelineها و کنترل نسخه‌ها بخش مهمی از نگهداری محصول است.

چالش اصلی؛ هماهنگی بین Playback، امنیت و چند پلتفرم

چالش این پروژه در تعداد صفحه‌ها نیست؛ در هماهنگ نگه داشتن چند سیستم متفاوت است. Streaming باید روی اینترنت‌های مختلف پایدار بماند، DRM باید با Player هر سیستم سازگار باشد، وضعیت کاربر بین دستگاه‌ها حفظ شود و Pipeline ویدیو بدون وارد کردن بار مستقیم به Backend اصلی کار کند.

معماری نهایی این مسئولیت‌ها را به لایه‌های مشخص تقسیم می‌کند: API و داده، پردازش، Object Storage، CDN، Player، DRM، Clientها، Admin و Monitoring. نتیجه، محصولی است که می‌تواند بدون بازطراحی کامل هسته، Client یا قابلیت جدید دریافت کند.

پلتفرم استریم اختصاصی برای کسب‌وکار شما

برای ساخت VOD، OTT، سامانه آموزش ویدیویی یا محصول محتوایی چندپلتفرمی، معماری باید براساس مدل محتوا، تعداد کاربران، نوع DRM، کشورهای هدف، حجم آرشیو و Clientهای موردنیاز انتخاب شود.

توسعه نرم‌افزار و پلتفرم اختصاصی آونا · توسعه محصول دیجیتال · ثبت درخواست پروژه

01۴کلاینت اصلی

PWA/Web، Android، Android TV و iOS/iPad

02۲فرمت Adaptive Streaming

HLS و MPEG-DASH

03۲DRM اصلی

Widevine و FairPlay

04End-to-Endزیرساخت

Backend، Video Processing، Storage، CDN، Monitoring و CI/CD

PROJECT FEATURES

ویژگی‌های کلیدی پروژه

جزئیاتی که تجربه نهایی محصول را شکل داده‌اند.

01

استریم تطبیقی ویدیو با HLS و MPEG-DASH

02

پردازش، Transcode و Packaging ویدیو با FFmpeg

03

ذخیره‌سازی فایل‌های ویدیویی روی S3-Compatible Object Storage

04

توزیع محتوا از طریق Cloudflare CDN یا AWS CloudFront

05

بک‌اند Go با PostgreSQL، Redis و NATS / Kafka

06

اپ Native اندروید با Kotlin، Jetpack Compose و Media3 / ExoPlayer

07

نسخه Android TV با Compose for TV و Media3 / ExoPlayer

08

اپ iOS و iPad با Swift، SwiftUI و AVPlayer

09

PWA و نسخه وب با Next.js، React، TypeScript و Shaka Player

10

DRM اندروید و Android TV با Widevine

11

DRM اپل با FairPlay

12

پروفایل‌های مجزا برای اعضای خانواده

13

لیست تماشا و ادامه تماشا بین محتوای مختلف

14

دانلود و تماشای آفلاین در کلاینت‌های پشتیبانی‌شده

15

پشتیبانی از چند زبان، صوت و زیرنویس

16

پنل مدیریت اختصاصی با Next.js و TypeScript

17

کانتینرسازی و استقرار با Docker، Kubernetes و Nginx

18

مانیتورینگ و خطایابی با Prometheus، Grafana و Sentry

19

CI/CD با GitHub Actions یا GitLab CI

NEXT PROJECT?

پروژه بعدی می‌تواند برای برند شما باشد.

اگر مسئله یا ایده‌ای دارید، آن را با ما مطرح کنید تا مسیر مناسب را با هم پیدا کنیم.

شروع پروژه