2009-01-22 27 views
19

Estoy trabajando para una empresa en la que estamos desarrollando soporte para video chat en una aplicación existente. He mirado en varias soluciones para este comoDesarrollo de una aplicación de video chat con transmisión de video de alta calidad

  1. Usando Gestionado espectáculo directo para la captura de vídeo y streaming en C#
  2. Algunos ejemplos de código de proyecto de código en el que tomar una imagen y pasarlo por la red (que yo llamaría es más bien una solución cruda ya que esto se comen gran cantidad de ancho de banda.
  3. Código un algoritmo de compresión desde cero a partir de cero y lo utilizan para comprimir-descomprimir vídeo.

Ahora el reto es que estamos tratando de lograr transmisión de video de muy alta calidad y la estafa La aplicación tainer está codificada en C# .NET

Esto es lo que he propuesto hasta ahora. La lógica de red para transmitir datos está escrita en C#, la compresión de video debe escribirse en VC++ y llamar a este dll de VC++ usando pinvoke o cualquiera de las CLI que sea posible.

Estoy buscando alguien con más experiencia que yo en este campo, que me puede sugerir si voy correcto o si esto todavía puede mejorarse.

El objetivo final es la transmisión de video de alta calidad. El códec puede ser cualquier cosa como h.2633, h.264 etc.

+0

https://www.twilio.com/docs/api/video –

Respuesta

22

He utilizado varias formas de hacer streaming de video/conferencia con .net fácilmente, sin necesidad de profundizar en el show direccional. (ok, cavar algunos, pero no profundo :)

1) Uso de componentes simples de Windows Media Encoder. Está documentado con ejemplos en Windows Media Encoder SDK. Bueno para cualquier transmisión de alta resolución, pero la demora es demasiado grande para el chat en tiempo real (0.5-2 segundos como máximo). Modern Express Encoder SDK otra opción.

2) Microsoft Research ConferenceXP http://cct.cs.washington.edu/ API de conferencias con funciones completas, incluida la transmisión de aplicaciones. También codificaron filtros de Windows Media de bajo nivel y los incluyeron en el código administrado. Funciona bien. Fácilmente personalizable. Parece un poco abandonado ahora.

3) Microsoft RTC Client hasta la versión 1.3 - núcleo de Windows Messenger.

pros: muestras gestionadas de Microsoft, buenos documentos, rendimiento confiable, redistribuible libremente, compatible con Microsoft (buena) pila SIP incluida. Los principales proveedores de conferencias como Emblaze VCON basaron sus soluciones en él en un pasado cercano, no estoy seguro en estos días, pero sé que Tandberg autorizó el VC-1 de Microsft.

contras: versión de hasta 1.3 solo soporte de video h261-h263. La versión moderna con soporte de códec VC-1 (h264) no permite conexiones ip-ip sin servidor directo. Lo hace al requerir el servidor de Microsoft Live Communications. La versión más reciente SDK no cubre bien las llamadas de videoconferencia.

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

Por favor, háganos saber qué plataforma que ha elegido. Por cierto, incluso he usado la parte rtp de video de ConferenceXP con funciones de voz/SIP RTC 1.3 para mejorar la calidad del video, por lo que tiene una amplia variedad de tecnologías administradas aquí. Otra cosa es Live Meeting en la que no tuve oportunidad de mirar bien aún.

+0

¿Esta información sigue siendo correcta? o hay mejores bibliotecas/formas de crear aplicaciones de video chat. –

10

Ahórrese el problema y use VLC. Hay algunos contenedores .NET decentes para él (http://forum.videolan.org/viewtopic.php?f=32&t=52021&start=30)

Estamos usando C# y VLC para una red IPTV. Tomamos datos de satélites de red DISH a través de dispositivos de captura de video Osprey-450 en un servidor Windows XP. A partir de ahí, tenemos un componente de servidor .NET que escribimos en C# que usa VLC detrás de escena (iniciando procesos separados en .NET para controlar las instancias de vlc.exe). Los procesos de VLC transcodifican y transmiten las señales a través de una red (.h264 o MPEG-4, hemos hecho ambas cosas con éxito).

En el lado del cliente tenemos una aplicación C# WinForm que utiliza un visor VLC incorporado para ver las señales de multidifusión. Esta aplicación es principalmente para el control de comando &. El uso real de las señales de multidifusión ocurre cuando nuestros decodificadores conectados a nuestro televisor decodifican y muestran las transmisiones.

Pensamos que también tendríamos que escribir nuestros propios codificadores DirectX, pero no nos tomáramos todas las molestias. VLC funciona realmente bien y tiene suficiente soporte C# para ser muy útil. No dude en enviarme un correo electrónico si tiene preguntas específicas sobre la implementación.

+0

¿cuál fue la calidad de video que lograste? ¿Fue excepcionalmente bueno? –

+0

Sí. Obtenemos una calidad de video muy buena con este sistema. Esa fue una de las prioridades, en realidad, cuando me entregaron esta tarea. La codificación .h264 se ve muy bien, pero es muy intensiva en el uso del procesador. Usamos la codificación MPEG-4 para nuestro sistema IPTV y se ve bien. –

+1

Tienes razón para tu caso de uso. Sin embargo, en mi experiencia VLC tiene una latencia bastante alta que la hace inutilizable para el video chat. – DerMike

2

Debería echarle un vistazo al SDK de Ucentrik. Este SDK le permitirá integrar funciones de medios enriquecidos, como video, audio, chat, compartir y controlar el escritorio remoto y grabar video en sus aplicaciones. Los códecs de video admitidos son VP8 (Google), Theora y x.264. Además, el tráfico de medios enriquecidos se encapsula dentro de un protocolo HTTP para permitirle atravesar firewalls que permiten el tráfico web normal. Esta tecnología es completamente gratuita y puede descargar el SDK y solicitar una clave API para que pueda evaluar sin invertir tiempo en la configuración de la infraestructura. En los próximos meses, lanzaremos un componente de servidor para que pueda descargar y alojar la infraestructura que usted mismo o su cliente. La tecnología admite conexiones de 1 a muchos, lo que significa que puede crear videoconferencias si lo desea. Las características son altamente modulares para que pueda integrar solo el video, el audio o el uso compartido de escritorio o una combinación de las tecnologías que usan el mismo SDK ... Debe solicitar un SDK disponible aquí: www.ucentrik.com. Además, hay algunos videos aquí: http://www.youtube.com/user/ucentrik

buena suerte.

0

Ucentrik acaba de lanzar una aplicación de centro de llamadas de código abierto que integra la tecnología CTX. Esta aplicación de centro de llamadas implementa el video, audio, uso compartido de escritorio/aplicaciones (con control), funcionalidad de chat de texto disponible desde la API de CTX. La aplicación también incluye una lógica de negocios específica en torno a la posibilidad de enrutar las llamadas a un agente que está disponible o tiene un conjunto de habilidades específico. El proyecto está disponible en http://vcca.codeplex.com; tenga en cuenta que necesitará acceder al Ucentrik CTX SDK, que está disponible para solicitar en el sitio web de Ucentrik (www.ucentrik.com). Buena suerte.

Cuestiones relacionadas