Серверное приложение на C# (или NodeJS)

14 000 руб. за проект • наличный расчёт, безналичный расчёт, электронные деньги
16 сентября 2014, 22:58 • 11 откликов • 120 просмотров
Требуется написать программу на C# (или на JavaScript для NodeJS), которая будет размещена в облаке Amazon (AWS) и будет выступать в роли видео-сервера.

При обращении на сервер, например, по запросу http://example.com/video/company_id/video_id/clien... программа читает входящие параметры и в соответствии с ними:
1. Проверяет, имеет ли client_id доступ к запрашиваемому файлу (выполняет API-запрос на один сервер)
2. Читает видеофайл video_id, который лежит в каталоге компании company_id на Amazon S3
3. Производит наложение водяного знака на видеопоток, который транслирует клиенту в ответ на его запрос

Важно:
— Стриминг производится с content-type: video/mp4 и с учетом partial content
— Водяной знак специфичен для каждого клиента. Т.е. он будет генерится программой на ходу
— Наложение должно происходить в real time

Насколько я изучил этот вопрос, реалтайм наложение позволяет сделать библиотека ffmpeg. Но я не выяснил, возможно ли вывод результата этой библиотеки направить в поток и можно ли читать файл кусочками (в случае, если клиент в плеере сразу перемотал ролик на середину).

Самый хардкорный вариант, как это можно сделать — читать "вручную" файл покадрово и с помощью графической библиотеки осуществлять наложение. Но здесь очень критичен вопрос нагрузки на процессор и использования ОЗУ.

Само собой разумеется, что программа должна работать асинхронно и обрабатывать не одного клиента за раз. В случае с NodeJS это делается на раз, но более требовательно к ресурсам.

P.S. Насчет API-запроса, насчет файлов на S3 — все это решаемые и обсуждаемые вопросы. От вас прежде всего ожидается компетентность в основном вопросе — реалтайм наложение графического водяного знака и стриминг результирующего потока.

UPD Будем считать, что требуется транскодирование файлов 460p/720p mpg/mp4 формата не больше 30fps в 460p 25fps с наложением вышеописанного оверлея