Разработка приложения видеочата с высококачественным потоковым видео - PullRequest
19 голосов
/ 22 января 2009

Я работаю в компании, в которой мы развиваем поддержку видеочата для существующего приложения. Я смотрел на различные решения для этого, как

  1. Использование Managed Direct show для захвата и потоковой передачи видео в C #
  2. Некоторые примеры кода в проекте кода, где мы берем изображение и передаем его по сети (я бы назвал это довольно грубым решением, так как это потребляет большую пропускную способность.
  3. Код алгоритма сжатия с нуля и использование его для сжатия-распаковки видео.

Теперь проблема в том, что мы стремимся достичь очень высокого качества потокового видео, а контейнерное приложение написано на C # .NET

Это то, что я предлагал до сих пор. Логика сети для потоковой передачи данных написана на C #, сжатие видео должно быть записано на VC ++ и вызывать эту DLL-библиотеку VC ++ с помощью pinvoke или любого другого CLI.

Я ищу еще одного опытного мною в этой области, который мог бы подсказать мне, правильно ли я поступаю или это еще можно улучшить.

Конечная цель - высококачественное потоковое видео. Кодек может быть любым, например, h.2633, h.264 и т. Д.

Ответы [ 4 ]

23 голосов
/ 26 декабря 2009

Я использовал несколько способов легко организовать потоковое видео / конференц-связь с помощью .net без необходимости копаться в directshow. (хорошо, копай немного, но не глубоко:)

1) Использование простых компонентов кодировщика Windows Media. Документально подтверждено примерами в Windows Media Encoder SDK. Подходит для потоковой передачи с высоким разрешением, но задержка слишком велика для чата в реальном времени (в лучшем случае 0,5-2 секунды). Modern Express Encoder SDK другой вариант.

2) Microsoft Research ConferenceXP http://cct.cs.washington.edu/ Полнофункциональный API конференц-связи, включая потоковую передачу приложений. Они слишком низкоуровневые Windows Media закодировали фильтры и обернули их в управляемый код. Работает хорошо. Легко настраиваемый. Выглядит немного заброшенным.

3) Microsoft RTC Client до версии 1.3 - ядро ​​Windows Messenger.

плюсы: управляемые образцы от Microsoft, хорошая документация, надежная производительность, свободно распространяемый, совместимый с Microsoft (хороший) стек SIP. Крупные поставщики конференц-связи, такие как Emblaze VCON, основывали свои решения на нем в недалеком прошлом, не уверенный в этом в наши дни, но я знаю, что Tandberg лицензировал VC-1 Microsft.

минусы: версия до 1.3 поддерживает только видео h261-h263. Современная версия с поддержкой кодека VC-1 (h264) не допускает прямых безсерверных IP-соединений. Требуется сервер Microsoft Live Communications. Более новая версия SDK не очень хорошо справляется с видеоконференцсвязью.

http://msdn.microsoft.com/en-us/library/ms775892(VS.85).aspx

Пожалуйста, дайте нам знать, какую платформу вы выбрали. Кстати, я даже использовал видео часть rtp ConferenceXP с функциями RTC 1.3 voice / SIP вместе, чтобы улучшить качество видео, поэтому у вас есть широкий выбор управляемых технологий здесь. Еще одна вещь - это живое собрание, на которое у меня еще не было возможности хорошо разглядеть.

10 голосов
/ 04 февраля 2009

Избавьте себя от неприятностей и используйте VLC. Для этого есть приличные обертки .NET (http://forum.videolan.org/viewtopic.php?f=32&t=52021&start=30)

Мы используем C # и VLC для сети IPTV. Мы принимаем данные со спутников сети DISH через устройства видеозахвата Osprey-450 на сервере Windows XP. Оттуда у нас есть серверный компонент .NET, который мы написали на C # и который использует VLC за кулисами (запуск отдельных процессов в .NET для управления экземплярами vlc.exe). VLC обрабатывает транскодирование и потоковую передачу сигналов по сети (.h264 или MPEG-4, мы успешно выполнили оба).

На стороне клиента у нас есть приложение C # WinForm, которое использует встроенный VLC Viewer для просмотра многоадресных сигналов. Это приложение в основном для командования и управления. Реальное использование многоадресных сигналов происходит, когда наши телевизионные приставки подключаются к телевизору и декодируют и отображают потоки.

Мы подумали, что нам придется написать собственные кодеры DirectX, но не стоит останавливаться на достигнутом. VLC работает очень хорошо и имеет достаточную поддержку C #, чтобы быть очень полезным. Не стесняйтесь, напишите мне, если у вас есть конкретные вопросы о реализации.

2 голосов
/ 30 мая 2011

Вы должны проверить Ucentrik SDK. Этот SDK позволит вам интегрировать мультимедийные функции, такие как видео, аудио, чат, совместное использование удаленного рабочего стола и управление, а также запись видео в ваши приложения. Поддерживаются видеокодеки VP8 (Google), Theora и x.264. Кроме того, мультимедийный трафик инкапсулируется в протокол HTTP, чтобы позволить ему проходить через брандмауэры, которые обеспечивают нормальный веб-трафик. Эта технология абсолютно бесплатна, и вы можете скачать SDK и запросить ключ API, чтобы вы могли оценить, не тратя время на настройку инфраструктуры. В ближайшие несколько месяцев мы выпускаем серверный компонент, чтобы вы могли загружать и размещать инфраструктуру для себя или своих клиентов. Технология поддерживает подключения «один ко многим», что означает, что вы можете создавать видеоконференции, если хотите. Функции являются модульными, поэтому вы можете интегрировать только видео, аудио или общий доступ к рабочему столу или комбинацию технологий, используя один и тот же SDK ... Вы должны запросить SDK, доступный здесь: www.ucentrik.com. Кроме того, здесь есть несколько видео: http://www.youtube.com/user/ucentrik

удачи.

0 голосов
/ 07 февраля 2012

Ucentrik только что выпустил приложение call-центра с открытым исходным кодом, которое интегрирует технологию CTX. Это приложение call-центра реализует функции обмена видео, аудио, рабочим столом / приложениями (с контролем), текстового чата, доступного через CTX API. Приложение также включает некоторую бизнес-логику, в частности, предоставляя возможность направлять вызовы оператору, который доступен или имеет определенный набор навыков. Проект доступен по адресу http://vcca.codeplex.com - обратите внимание, что вам потребуется доступ к Ucentrik CTX SDK, который можно запросить на веб-сайте Ucentrik (www.ucentrik.com). Удачи.

...