Предпосылка:
Я работаю в компании, занимающейся вещательными решениями, и мы покупаем SDK для воспроизведения у внешнего поставщика, это снижает нагрузку на видео, рендеринг, воспроизведение и т. Д.предоставляет нам множество функций, таких как генератор символов, наложение изображений, текста, файлов Flash (* .swf), потоковой передачи и т. д. Мы в основном сосредоточены на разработке приложений (а не на разработке технологий).Таким образом, мы делаем простые вызовы API из нашего кода C # в библиотеки DLL SDK, такие как воспроизведение, пауза, seak, оверлей и т. Д., И это облегчает нашу жизнь.
Между тем мы также сталкиваемся с проблемами, поскольку SDK предоставляется третьей стороной в другой стране, и поэтому качество поддержки зависит от них.Кроме того, добавленная ими функция имеет общий характер, и они выпускают новую версию каждые две недели.В их коде много ошибок.Мы также сталкиваемся с проблемами лицензирования, даже если мы купили их полный продукт.
Требования:
- Мы хотим оценить возможность написания нашего собственного механизма воспроизведения / рендеринга - изначально с минимальными функциями, но в долгосрочной перспективезапустить, мы бы добавили к нему больше функций, таких как наложение изображения или текста или флэш-SWF-файл, поиск, быстрая перемотка вперед и т. д.
- Мы также принимаем входной поток в реальном времени с аппаратных устройств и отправляем видеосигнал на ТВ черезаппаратные устройства и запись прямых трансляций на диск.Мы переключаемся между живым вводом и локально сохраненными видеофайлами.
- Нам необходимо воспроизводить все виды видео (быстрое время, mp4, flv и т. Д.), Поэтому мы также будем зависеть от сторонних кодеков.
- Мы можем использовать разные аппаратные карты для ввода и вывода, и нам нужно будет перебрать и получить доступную конфигурацию оборудования.
- Мы работаем на C #, и у нас есть опытные разработчики на C #, и мы не хотим использовать C ++ для разработки, поскольку у нас в настоящее время нет эксперта по C ++ в нашей компании.
Вопросы:
- Какой должен быть наш подход - можем ли мы написать playout с упомянутыми функциями, используя чистый C # и DirectX 11 (это правильный путь или какой-то другой лучший способсуществует)?
- Насколько легко или сложно достичь того же (это субъективный вопрос - достаточно субъективного ответа)?
- Является ли хорошо написанный код C # медленнее, чем код C ++?(что касается DirectX и воспроизведения мультимедиа, когда мне может потребоваться обеспечить до 30 видеокадров в секунду для стандартов NTSC)?
- Каков хороший способ (ресурс) для его запуска (включая концепции и кодирование)?
Это комплексный вопрос, но вы, экспертный совет, сделаете мое руководство и прогресс легким.