Задать вопрос
@alexdora
Топ-менеджер

MacPro или самосборка на Win10 в данном случае?

Дано 3 камеры на RAW которые через HDMI/SDI гонят видеопоток на компьютер и надо закодировать эти 3 потока, тут внимание, 6-9 раз в 1080p@30. Кодирование происходит на базе ffmpeg/OBS c разных сторон.
Схема выглядит примерно так:
cam1 => HDMI => ffmpeg 1080p/30 15mbit (цветкорр небольшой + сжатие) => RTMP (как разделитель) =>
1 поток отправляется как есть на другой сервер RTMP для публикации
2 поток забирается OBS для наложения динамической графики webgl и отправки результата на другой RTMP

И так 3 раза + возможно добавится еще одно кодирование.
Сразу: Я понимаю что ловить OBS и снова перекодировать идет с потерей качества (но это там не критично), да и на таком битрейте мало заметно будет

Существует такой выбор:
– купить macpro-ведро с 8-12 ядрами и обойдется это в 280кр со всеми переходниками (включая захваты HDMI). Да, дорого для их железа, но при этом существует несколько плюсов:
1. Это стабильная система. Тут требование есть что площадка работать будет 24/7 и пользоваться ей будут не всегда разбирающиеся в компах люди. Основа ввиде macosx отработано в нескольких фирмах дает надежность, чтоб не говорили. Да и сам пользователь mac osx на буке, все тут понятно
2. Если потребуется продать, то продается это с минимальной потерей денег

– Собрать чуть помощнее комп на базе виндов и он получится мощнее всего процентов на 15(на глаз), а дешевле на 100к рублей. Рассматривали топовый i9 или Зион E5 + 16RAM DDR4 ECC + одна видяха
Тут два минуса основным – винда (которую надо переодически обслуживать, кто бы что не говорил. У меня есть специалисты которые уже давно работают исключительно с виндой и намекают на то, что с серверной виндой все ок её можно отстроить и она работает хорошо. Но обычная для пользователей, её надо обслуживать и настраивать. Сломать её можно очень легко при наличии рук из жопы даже если настраивал профессионал) и не понятно куда это железо сбыть, если потребуется продать. Да и потери в цене будут больше.

Этот выбор встал не из-за денег так таковых. Т.е есть аппаратное решение которое обойдется примерно в 1млн рублей, а есть вот такое решение которое выше. Основная беда в том что есть сомнение что macpro вытянет все это дело (все же проц хоть и остается по бенчу наверху, но уже 13 год как никак). У меня i5 в буке macbook pro retina late 12 через thunderbolt захлебывается одним потоком, а тут их будет 6 и несмотря на полноценный камень серверный есть сомнения. Но данной машиной еще будут одновременно при работает потоков пользоваться и тот же ffmpeg при отсутствии запаса мощности начнет переполнять буфер и откидывать пакеты.
Чтобы это все работало, вот это все выше должно нагружать процессор максимум на 30-40%. Остатки мощей должны быть на работу за компьютером самим.
Требуется свежие мысли, посчитать сколько потребит один поток слишком сложно.
  • Вопрос задан
  • 406 просмотров
Подписаться 1 Простой 9 комментариев
Решения вопроса 2
@alexdora Автор вопроса
Топ-менеджер
Чем закончилось дело

Была собрана на двух камнях xeon E5-2690v4 (28 ядер с HP * 2 = 56 ядер при частоте 2.6) + Nvidia Quadro P2000 + плата Blackmagic Duo 2 на 4 SDI
По изначальным планам мы хотели поставить туда Windows 10, распилить по RDP на 4 машины. Пока все настраивалось пришли к выводу вытащить камни 2690 и использовать их в другом месте, а взамен поставили 2 камня младшие 2630v4 (20 ядер с HP * 2 = 40 частота 2.2)
Сначала все было хорошо, но уперлись в неприятную проблему. При подключении по RDP пользователю есть выбор как передавать аудио. Либо играть на устройстве которое подключено, либо играть на устройстве основном. Если выбрать на котором подключено, то аудио-драйвера не отображаются в программах вещательных. Т.е что-то типа стандартное устройство бла-бла-бла. Если выбрать на основном начинается беда с тем, что можно случайно все сломать. Много чего перепробовали, правили реестр и искали решение, в итоге плюнули т.к посчитали что это уже костыльный костыль, притом насколько это стабильно будет вообще не понятно.
Пока все это тестилось, я провел стресс тест кодирования. Основной вопрос был потянет ли и сколько потоков. После этого стресс теста собственно и принято решение поставить камни помладше. Результаты:

Один поток 1080p@60 slow High keyframe 1 h.264 (на одном процессоре Xeon 2630v4) дает загрузку 8%
Один поток 1080p@60 High keyframe 1 Nvenc (на видеокарте quadro p2000) дает загрузку 10%

Отвечая на свой вопрос в самом начале, потянет Macpro или нет – потянет. Я выделил режим кодирования slow. Обычно все кодируем в формате veryfast. Т.е переводя на русский язык ОДИН процессор xeon 2630v4 может перемолоть 1080p@60 в режиме slow 10 потоков. В режиме veryfast там загрузка дай бог 1-2%. А нам в задаче вообще нужно 30 кадров в секунду и не такие сцены, которые стоит обрабатывать в slow режиме

Теперь дальше. Решили использовать метод которые многие сочтут неадекватным, но он для нас оказался решающим. Мы поставили Vmware Esxi 6.5 и в режиме Passthrought VGA пробросили карту на VM Windows. Я делал это сам и удивлен, насколько все просто. Все же я не технарь, но за 1 час по инструкциям все поставил.

На этом месте хочу пояснить чем обусловлен выбор карты Quadro P2000 (типа можно было обойтись Geforce картой)
Во-первых тут речь шла о более чем одном потоке nvenc, есть вот такая табличка: https://developer.nvidia.com/video-encode-decode-g...
Выбрана была самая дешевая карта с Unlimited и более менее свежая.
Во-вторых обращали внимание на то что она занимает один слот. Есть куча костылей обойти лимит на игровых картах Geforce. Но все эти костыли не для продакшена.
В третьих есть еще вопрос энергопотребления. Мы платим за электричество. Тоже самое на Geforce нам бы обошлось в дополнительные деньги на блок-питание + около 42тыс в год в деньгах на электричество. Да мы тут взяли на досуге и посчитали ;)

С учетом изменившейся схемы, а именно установки гипервизора и распилом машины на 4 части с выбором видяхи мы прогадали только в том, что можно было купить более младшую модель P400. Ну, да ладно.

Подведем итоги, как все выглядит и что получилось.
Сервер: Dual Xeon E5-2630V4 + 64RAM ECC Reg + Blackmagic Duo 2 + 3 видеокарты Nvidia Quadro P400 + 1 видеокарта P2000
Базовая операционка Vmware Esxi 6.5
4 Windows 10 Pro c Passthroght VGA. У каждой своя видеокарта в монопольном доступе.
1 Ubuntu 16.04 c Passthrought Blackmagic. Операционке отдана карта Blackmagic полностью, там собран ffmpeg который порты SDI конвертирует в NDI (это довольно свежий стандарт без потери качества для передачи по сети). Потом NDI ловят машины на Windows 10 Pro и уже дальше переваривают. Линукс потому что надо танцевать с бубнами чтобы собрать ffmpeg + NDI под видной. На linux это делается одной командой, на винде надо курить мануал. Очень удобно то, что операционки сидят на одном виртуальном интерфейсе. Там действительно задержки нет.

Все это обошлось в сумме по деньгам в 200к рублей (с винтами, корпусом). По итогу имеем 4 машины полноценные в одной, точнее 3 рабочих станции для вещания которые 4K60 потянут при желании. Жрет это все когда включаешь кодирование на всех с загрузкой 25% на оба камня – 520 ватт.

Сейчас последние всякие стресс тесты делаем, для запуска в продакшен. Хотя многие оно уже прошло. Порадовало на гипервизоре перезагрузка без зависание PCI-e видяхи. Реально спасение

Старое до сборки, но актуальное

Я напишу ответ. Ночь сиденья с людьми дало свои плоды и в принципе мы нашли решения. А мысли будут может полезны по этой теме кому-то
1. Мы пытались выбрать комплектующие под машину с двумя зионами (Xeon). Оказалось это реально не тривиальная задача. Нам нужна была плата с двумя камнями + ATX корпус (т.к видяха должна встать) + нужны в определенном количестве PCIe 4x слоты. Таких плат подходящих пот v3/v4 процессоры мало. v3/v4 выбираются потому что память под более старые модели тупо придется по блошиным рынкам собирать. Уже с такой частотой низкой памяти не взять. Плат нашли всего 3 по подходящим условиям, сидели фотки смотрели чтобы точно вошла видяха и остальные платы. Дополнительное усложнение – некоторые PCI меняют режим работы при определенных условиях. Вообщем жопа со всем этим. Машина с двумя камнями у нас получилась 189 тыс рублей, бенч общий 26к. Т.е выше был диалог на эту тему и я был прав. Но я все равно рад что диалог состоялся, т.к в нем родилась идея найти возможность перенести все на GPU
2. Сегодня-Завтра на тестовой слабой машине i5 + Nvidia с core Pascal мы прогоним тест. Самое ресурсоемкое и что может ввести любой процессор в пике - изначальное кодирование HDMI/SDI RAW сигнала с карты захвата в что-то типа h.264 со всеми плюшками. Конкретно OBS делать это не умеет на базе видяхи, а вот ffmpeg кушает nvec на милую душу. Тут сразу возникает нюанс – сколько конкретная карта может вытягивать потоков. C ffmpeg все довольно просто – в крайнем случае можно задать конкретно какую видео-карту использовать, но в изначальной задаче был риалтайм обработка (графика / скэлинг) и посути мы должны получить 2 разных потока по содержанию. Один чистый, другой с обработкой.
Тут на беглый вид рисуется схема:
=> ffmpeg nvidia => ( RTMP для деления )
1. ffmpeg отправляет сразу на сервер без сжатия откуда всё уходит по сервисам с нужным сжатием
2. Забираем поток софтом vMix, накладываем эффекты/скэлинг и дальше на тот же сервер
vMix тоже умеет работать с nvidia (ну, он собственно делает тоже самое что ffmpeg). Софтина платная, но для этих задач вроде не так дорого, а гибкость зашкаливает
В итоге получается 2 чистых кодирования на машине куда подключена камера
И да все на базе винды.

Остается момент с тем, что vMix насколько я понял умеет выбирать видео карту которую надо использовать. Но это последняя миля. Т.е ты не можешь запустить на одной машине больше vMix. И встает проблема, что либо собирать маломощные машины с 1 видяхой, либо рисовать костыль формата 3 видяхи в одном + карта захвата и каким-то чудесным образом все выруливать. Можно вырулить еще 2-мя машинами в каждом по две видяхи. Но опять же по тому же сайту vMix i7 простой + nvidia 1080 вытягивают 4 входящих потока

3. И не могу не вспомнить про macpro. Эта же схема через ffmpeg и нвидиа видяхи. Она будет стоить чуть дороже, но будет работать. Две видяхи через Thunderbold box (1000баксов), но можно и макпро взять на эту штуку дешевле.

пока считаем и думаем что будет менее нагромождено по оборудованию. У macpro не будет конечно vMix, но OBS точно зацепит. Их всего 3 понадобиться. Общие видяхи вытянут webgl, проц вытянет поток уже сжатого ffmpeg на видео потока. Вообщем сейчас на винде прокатим и будем думать, как жить.
Ответ написан
@silverjoe
Комментариев много, потому в виде ответа сделаю заметку:

1. У вас некорректное сравнение мобильного "i5 в буке macbook pro retina late 12" и процессоров Intel Xeon E5-1620, E5-1650, E5-1680, E5-2697 ("Ivy Bridge") которые устанавливаются в Mac Pro. ну как бы должны понимать что в ноутах i5 не соответствует десктопным i5, а вы с Xeon равняете.

2. Сразу оговорюсь, что в этом вопросе не специалист, но слышал от многих, что обработка видео на видеокартах грешит неправильной цветопередачей. Если не критично - то можно забить.

По поводу серверных процов и мамок и десктопных корпусов - на ютубе есть канал TheSellHard (https://www.youtube.com/channel/UCB2ryEmk8bQ6XYfda... я у него видел сборки на многопроцессорных матерях в корпусах EATX (если не ошибаюсь в названии).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы