Моей команде поручено создать полноэкранное приложение в стиле киоска для воспроизведения мультимедийных файлов. Первоначально нам нужно поддерживать WMV / MP4, а также некоторые изображения в полном разрешении 1080p, хотя в дальнейшем нам потребуется расширить это, чтобы охватить другие форматы (различные форматы видео, а также отображение HTML, SWF и т. Д.).
Приложение также содержит приличную часть бизнес-логики, относящейся к планированию, ведению журнала, мониторингу производительности, а также к сетевому коду для связи с центральным сервером через веб-службы (или, возможно, TCP) и, возможно, в качестве самого сервера. *
Для нашего воспроизведения видео WMV / MP4 аппаратное ускорение будет огромным бонусом. У целевого оборудования слабые процессоры, но сильные видеокарты.
Вот что важно: мы магазин .NET (наше существующее приложение - умный клиент WinForms) и чрезвычайно опытный и продуктивный в C # и стеке .NET. Изначально приложение будет ориентировано на Windows Embedded (.NET 3.0), , но , нам также потребуется версия для Linux. У нас есть некоторый опыт работы с C / C ++ и Linux, но мы не ожидаем хорошей производительности на этой платформе.
Так что я обращаюсь к рекомендациям по следующим пунктам:
Видео. В Windows мы добились хорошего успеха при использовании DirectShow.NET. На подходящем оборудовании WPE MediaElement также, кажется, работает хорошо. Что мы должны использовать в Linux? libavcodec кажется обычным выбором. Это аппаратное ускорение на видеокартах NVidia на Linux? Какие еще варианты у нас есть в Linux? Есть что-нибудь кроссплатформенное, что я мог бы рассмотреть?
Stack.
а) В идеале мы могли бы написать все это в .NET, а затем запустить под Mono в Linux. Воспроизведение видео и, возможно, некоторые другие компоненты (например, мониторинг производительности) не будут поддерживаться в Mono. Я думаю, мы могли бы переписать эти элементы, скажем, в C ++; но я предполагаю, что большинство вещей на стороне бизнес-логики будет работать.
б) Может быть, лучше потерять нашу предельную производительность в версии для Windows из-за того, что это кроссплатформенное решение. А как насчет Java? У нас есть разные варианты, когда дело доходит до видео? Как насчет другого фреймворка? Что-то вроде QT? Кто-нибудь еще может предложить что-нибудь кроссплатформенное, что будет иметь отношение?
Вообще говоря, учитывая требования, что бы вы использовали?
Я ценю любые ваши ответы.