¿Para qué se utiliza el software de servidor de streaming de medios?
Lo encontré después de mucho trabajo, ¿es lo suficientemente detallado?
1 Introducción
Con el rápido desarrollo de Internet, la aplicación de la tecnología de transmisión de medios se está generalizando cada vez más, desde radio en línea y reproducción de películas hasta enseñanza a distancia y noticias en línea. Sitios web. Ven a la tecnología de transmisión. Sin embargo, la mayoría de los informes de literatura pública existentes utilizan servidores de medios de transmisión existentes para construir un sistema de servicios de medios de transmisión, o investigan métodos de codificación de datos de medios de transmisión. La investigación de este artículo sobre la tecnología de servidor de transmisión de medios se centra en cómo construir un servidor y construir un servidor de transmisión de medios básico basado en los dos protocolos básicos RTP/RTCP para la transmisión de medios de transmisión.
2 Introducción a la tecnología de medios de streaming
2.1 Definición de "stream"
Hoy en día, los principales tipos de transmisión de vídeo y audio en Internet son la descarga y el streaming. . ) de dos maneras. La transmisión de streaming es la transmisión continua de señales de video/audio. Cuando los medios de streaming se reproducen en el cliente, las partes restantes continúan descargándose en segundo plano. Hay dos formas de transmisión: transmisión progresiva y transmisión en tiempo real. La transmisión en vivo es una entrega en tiempo real y es particularmente adecuada para eventos en vivo. La transmisión en vivo debe coincidir con el ancho de banda de la conexión, lo que significa que la calidad de la imagen se deteriorará debido a la reducción de las velocidades de la red para reducir la necesidad de ancho de banda de transmisión. El concepto de "tiempo real" significa que la entrega de datos en una aplicación debe mantener una relación temporal precisa con la generación de los datos.
Los medios continuos basados en el tiempo que utilizan tecnología de transmisión por secuencias en Internet se denominan medios por secuencias, y su video y audio generalmente se denominan secuencias de video y secuencias de audio. La transmisión generalmente requiere servidores y reproductores dedicados.
2.2 Componentes del sistema de transmisión de medios
La transmisión de medios se compone de varios softwares diferentes que se comunican entre sí en diferentes niveles. El sistema de transmisión de medios básico incluye los siguientes 3 componentes:
Reproductor, software utilizado para reproducir medios en streaming.
Servidor (Servidor), software utilizado para enviar medios de streaming a los usuarios.
Encoder (Encode) es un software que se utiliza para convertir audio y vídeo originales a formato multimedia de streaming.
Estos componentes se comunican entre sí a través de protocolos específicos e intercambian datos de archivos entre sí en formatos específicos. Algunos archivos contienen datos decodificados por un códec específico, que comprime los datos del archivo mediante un algoritmo específico.
3 Funciones básicas y métodos de servicio de los servidores de streaming de medios
3.1 Funciones principales de los servidores de streaming de medios
(1) Responder a las solicitudes de los clientes y transmitir datos de medios a clientes. El servidor de streaming debe mantener comunicación bidireccional con el reproductor del cliente durante el streaming (esta comunicación es necesaria porque el cliente puede pausar o adelantar un archivo en cualquier momento).
(2) Mientras responde a la transmisión, puede procesar los datos de transmisión en tiempo real recién recibidos de manera oportuna y codificarlos.
(3) Puede proporcionar otras funciones adicionales, como: gestión de derechos digitales (DRM), inserción de publicidad, división o duplicación de transmisiones de otros servidores y multidifusión.
3.2 Modo de servicio del servidor de streaming multimedia
(1) Unicast. Se establece un canal de datos separado entre el cliente y el servidor de medios, y cada paquete de datos enviado desde un servidor solo puede enviarse a un cliente.
(2) Multidifusión. En las redes construidas con tecnología de multidifusión, los enrutadores pueden copiar paquetes en varios canales a la vez.
(3) Bajo demanda y emisión. Una conexión bajo demanda es una conexión activa entre el cliente y el servidor. En una conexión bajo demanda, el usuario inicia la conexión del cliente seleccionando un elemento de contenido. El usuario puede iniciar, detener, rebobinar, avanzar rápidamente o pausar la transmisión. . La transmisión se refiere al usuario que recibe pasivamente la transmisión. Durante el proceso de transmisión, se enviará una única copia del paquete de datos a todos los usuarios de la red. El cliente recibe la transmisión pero no puede controlarla.
4 Construir un servidor de streaming multimedia
4.1 Introducción al protocolo RTP/RTCP
Protocolo de transporte en tiempo real RTP (Realtime Transport Protocol): Es para multimedia flujos de datos en Internet Un protocolo de transporte publicado por el IETF (Internet Engineering Task Force) como RFC1889. RTP está definido para funcionar en situaciones de transmisión uno a uno o uno a muchos, y su propósito es proporcionar información de tiempo y lograr la sincronización de la transmisión. Las aplicaciones típicas de RTP se crean sobre UDP, pero también pueden funcionar sobre otros protocolos como TCP o ATM. El propio RTP solo garantiza la transmisión de datos en tiempo real y no proporciona un mecanismo de entrega confiable para entregar paquetes de datos en orden, ni proporciona control de flujo o control de congestión. Depende de RTCP para proporcionar estos servicios.
RTCP (Protocolo de control de transporte en tiempo real): Responsable de gestionar la calidad de la transmisión e intercambiar información de control entre los procesos de aplicación actuales. Durante la sesión RTP, cada participante transmite periódicamente paquetes RTCP, que contienen estadísticas como la cantidad de paquetes de datos enviados, la cantidad de paquetes de datos perdidos, etc. Por lo tanto, el servidor puede usar esta información para cambiar dinámicamente la velocidad de transmisión, e incluso Cambiar el tipo de carga útil. RTP y RTCP se utilizan juntos para optimizar la eficiencia de la transmisión con retroalimentación efectiva y una sobrecarga mínima, por lo que son particularmente adecuados para transmitir datos en tiempo real en Internet.
RTCP tiene cuatro funciones principales:
(1) Utilizar información de retroalimentación para proporcionar la calidad de transmisión de datos distribuidos. Esta retroalimentación se puede utilizar para el control de la congestión del tráfico y también para. monitorear la red y diagnosticar problemas en la red;
(2) Proporcionar una marca de capa de transporte CNAME (nombre canónico) permanente para la fuente RTP, porque cuando se descubren conflictos o se actualiza el programa El SSRC (identificador de fuente de sincronización ) cambiará al reiniciar y se requiere un seguimiento de la operación. El receptor también necesita usar CNAME para obtener los flujos de datos asociados (como audio y video) de un participante específico en un grupo de sesiones relacionadas < /; p>
(3) Ajustar la velocidad de envío de paquetes RTCP según el número de participantes;
(4) Transmitir información de control de sesión, como mostrar la identificación del participante en la interfaz de usuario. características.
4.2 Proceso de trabajo RTP/RTCP
Cuando está en funcionamiento, el protocolo RTP recibe flujos de código de información de medios (como H.263) de la capa superior y los ensambla en paquetes de datos RTP. y los envía a la capa inferior. El protocolo proporciona descarga de RTP y RTCP. Por ejemplo, en UDP, RTP usa un puerto par y el RTCP correspondiente usa el puerto impar posterior. No hay límite de longitud para los paquetes de datos RTP y la longitud máxima del paquete solo está limitada por el protocolo subyacente.
4.3 Algoritmo de servidor
Hay dos modelos principales de software de servidor: servidor concurrente y servidor de bucle. Servidor iterativo se refiere a un servidor que solo procesa una solicitud a la vez. Servidor concurrente (Servidor concurrente) se refiere a un servidor que puede manejar múltiples solicitudes a la vez. De hecho, la mayoría de los servidores no tienen funciones redundantes para manejar múltiples solicitudes simultáneamente, sino que brindan una apariencia de concurrencia al confiar en la ejecución de múltiples subprocesos, cada subproceso maneja una solicitud. Desde la perspectiva del cliente, es como si el servidor se estuviera comunicando con múltiples clientes. al mismo tiempo.
Debido a la incertidumbre del tiempo del servicio de transmisión de medios y la solicitud de interacción de datos en tiempo real, los servidores de transmisión de medios generalmente utilizan algoritmos de servidor concurrentes. Este artículo crea un servidor de transmisión de medios básico que puede responder a múltiples solicitudes de usuarios al mismo tiempo y enviar archivos multimedia de transmisión en el disco duro local o flujos de datos en tiempo real (formato H.263) a los usuarios. En la aplicación, los clientes se dividen en dos categorías: clientes en tiempo real que solicitan datos en tiempo real y clientes de archivos que solicitan datos de archivos. El algoritmo principal es:
(1) Abra el dispositivo y asigne recursos. Cuando el dispositivo esté listo, cree un subproceso de servicio en tiempo real RTP y un subproceso de servicio en tiempo real RTCP.
(2) Cree un socket UDP y vincúlelo a la dirección del servicio proporcionado.
(3) Llame repetidamente al módulo receptor para recibir el informe RTCP del cliente y responder según su tipo. Para solicitudes de nuevos clientes en tiempo real, la dirección del cliente se agrega a la lista de clientes del servicio en tiempo real; para solicitudes de nuevos clientes de archivos, se crean un nuevo hilo de servicio de archivos RTP y un nuevo hilo de servicio de archivos RTCP para los clientes; ya en servicio, Adaptar los servicios según lo que informe RTCP.
Subproceso 1 del servicio RTP en tiempo real: inicializa la lista de clientes y el encabezado RTP.
Subproceso 2 de servicio RTP en tiempo real: lee datos multimedia desde el dispositivo y envía los datos a los clientes en la lista de servicios en tiempo real.
Subproceso 3 del servicio RTP en tiempo real: actualizar el encabezado RTP y los datos estadísticos.
Hilo 4 del servicio RTP en tiempo real: Calcule el retraso y repita el segundo paso.
Subproceso 1 del servicio RTCP en tiempo real: inicializa el encabezado RTCP.
Subproceso 2 de servicio en tiempo real RTCP: envía el informe del remitente a los clientes en la lista de servicios en tiempo real.
Subproceso 3 del servicio RTCP en tiempo real: Calcule el retraso y repita el segundo paso.
Subproceso 1 del servicio de archivos RTP: inicializar el encabezado RTP.
Subproceso 2 del servicio de archivos RTP: lee datos multimedia del archivo y envía los datos al cliente.
Subproceso 3 del servicio de archivos RTP: actualice las estadísticas de los datos enviados para prepararse para generar el informe del remitente.
Hilo 4 del servicio de archivos RTP: Calcule el retraso, ajuste la velocidad de envío y repita el segundo paso en circunstancias normales.
Subproceso 1 del servicio de archivos RTCP: inicializa el encabezado RTCP y envía un mensaje de descripción de origen (SDES) al cliente.
Subproceso 2 del servicio de archivos RTCP: Genera un informe del remitente basado en la información estadística de los datos enviados y envíalo al cliente.
Subproceso 3 del servicio de archivos RTCP: Calcule el retraso y repita el primer paso en circunstancias normales.
5 Cuestiones a las que se debe prestar atención en la implementación de servidores de streaming media
5.1 Separación de sesiones y transmisiones en dos niveles
Una sesión RTP (Session ) incluye todo el tráfico de un par de destino específico (par de destino), el remitente puede incluir varios. La secuencia de paquetes RTP enviados desde la misma fuente de sincronización se denomina flujo y una sesión RTP puede contener múltiples flujos RTP. Cuando el servidor envía un paquete RTP, siempre es necesario especificar a qué sesión y flujo pertenece. Al recibirlo, también debe realizar dos niveles de demultiplexación, a saber, demultiplexación de sesión y demultiplexación de flujo. Solo cuando RTP utiliza el identificador de fuente de sincronización (SSRC) y el tipo de paquete (PTYPE) para combinar paquetes en la misma secuencia, los paquetes se pueden ordenar y reproducir correctamente utilizando el número de secuencia (Número de secuencia) y la marca de tiempo (Marca de tiempo).
5.2 Gestión de subprocesos múltiples
El modo de servidor concurrente requiere el uso de subprocesos múltiples para proporcionar servicios, por lo que la administración de subprocesos múltiples es muy importante. En el servidor creado en este artículo, las solicitudes y comentarios de diferentes clientes son procesados por el hilo principal del servidor. Debido a la singularidad de los datos en tiempo real, diferentes clientes en tiempo real pueden usar un hilo de servicio RTP en tiempo real y otro. Hilo de servicio RTCP en tiempo real, por lo que puede reducir en gran medida la carga en el servidor. Cada cliente de archivos puede tener diferentes requisitos de velocidad y tiempo de inicio debido a los diferentes archivos solicitados, por lo que necesita su propio hilo de servicio de archivos RTP y su propio archivo RTCP. hilo de servicio.
El subproceso de servicio RTP es responsable de enviar el flujo de datos en tiempo real al cliente. El subproceso de servicio RTCP genera el informe del remitente al cliente en función de los datos estadísticos del subproceso RTP. El subproceso RTP y el subproceso RTCP pasan datos estadísticos de interacción de memoria compartida. La memoria compartida debe estar protegida por un mutex para evitar lecturas y escrituras erróneas. De esta forma, el servidor puede proporcionar cómodamente diferentes servicios según las diferentes solicitudes y situaciones específicas de cada usuario.
5.3 Procesamiento de marca de tiempo
El campo de marca de tiempo es la información de sincronización en el encabezado RTP que describe la hora del paquete de datos y es la clave para la recuperación de datos en la secuencia de tiempo correcta. El valor de la marca de tiempo proporciona el tiempo de muestreo (instantáneo de muestreo) del primer byte de datos en el paquete. Se requiere que el reloj de la marca de tiempo del remitente sea continuo y crezca de manera monótona, incluso cuando no se ingresan ni envían datos. Durante el silencio, el remitente no tiene que enviar datos y mantiene la marca de tiempo creciendo en el extremo receptor, dado que el número de secuencia del paquete de datos recibido no se pierde, sabe que no se ha producido ninguna pérdida de datos, y siempre y cuando la diferencia. en las marcas de tiempo de los paquetes anteriores y posteriores se compara y se puede determinar el intervalo de tiempo para la salida.
RTP estipula que la marca de tiempo inicial de una sesión debe seleccionarse aleatoriamente, pero el protocolo no especifica la unidad de la marca de tiempo ni la interpretación precisa del valor. En cambio, el tipo de carga determina la granularidad de. el reloj, de modo que cada tipo de aplicación pueda elegir la precisión de sincronización de salida adecuada según las necesidades.
Cuando RTP transmite datos de audio, la velocidad de marca de tiempo lógica generalmente se selecciona para que sea la misma que la frecuencia de muestreo, pero cuando se transmiten datos de video, la velocidad de marca de tiempo debe ser mayor que un tick por cuadro. El estándar de protocolo también permite que varios paquetes tengan el mismo valor de marca de tiempo si los datos se muestrean al mismo tiempo.
5.4 Control de la velocidad de envío de datos multimedia
Dado que el protocolo RTP no especifica la longitud del paquete RTP y la velocidad de envío de datos, la velocidad del servidor que envía datos multimedia necesita ajustarse según la situación específica. Para los datos en tiempo real del dispositivo, se puede acceder al búfer del dispositivo en intervalos de tiempo iguales y los datos se pueden enviar cuando se ingresan nuevos datos. La configuración de la marca de tiempo es relativamente fácil. Para archivos multimedia que se han grabado en el disco duro local, tome los archivos en formato H.263 como ejemplo. Dado que el archivo en sí no contiene información sobre la velocidad de fotogramas, necesita conocer la velocidad de fotogramas durante la grabación o establecer un valor inicial al enviar. datos Encuentre el número de fotogramas en los datos enviados, calcule el retraso en función de la velocidad de fotogramas y el valor preestablecido, envíe los datos a la velocidad adecuada y establezca la información de la marca de tiempo.
5.5 Sincronización de múltiples transmisiones
Una función clave de RTCP es permitir que el receptor sincronice múltiples transmisiones RTP. Por ejemplo, cuando el audio y el video se transmiten juntos, debido a diferentes codificaciones. RTP utiliza dos transmisiones para transmisiones separadas, de modo que las marcas de tiempo de las dos transmisiones se ejecutan a velocidades diferentes y el receptor debe sincronizar las dos transmisiones para garantizar que el sonido y la imagen sean consistentes. Para lograr la sincronización de transmisiones, RTCP requiere que el remitente le dé a cada transmisión un nombre canónico único que identifique la fuente de datos. Aunque las diferentes transmisiones enviadas por una fuente de datos tienen diferentes identificadores de fuente de sincronización (SSRC), tienen el mismo nombre canónico. el receptor sabe qué transmisiones están relacionadas. El receptor puede utilizar la información contenida en el mensaje de informe del remitente para coordinar los valores de marca de tiempo en las dos secuencias. El informe del remitente contiene un valor de tiempo absoluto expresado en formato Network Time Protocol NTP (Protocolo de tiempo de red) y luego se proporciona un valor de marca de tiempo RTP en el informe RTCP. El reloj que genera este valor es el que genera el campo TimeStamp en el. Reloj de paquete RTP. Debido a que todas las transmisiones y los informes del remitente utilizan el mismo reloj absoluto, el receptor puede comparar los tiempos absolutos de dos transmisiones de la misma fuente de datos para determinar cómo asignar el valor de la marca de tiempo en una secuencia al valor de la marca de tiempo en la otra. arroyo.
6 Conclusión
La aplicación de la tecnología de transmisión de medios se está generalizando cada vez más y la investigación sobre la tecnología de transmisión de medios tiene una gran importancia práctica. Este artículo analiza el servidor de transmisión de medios a través de la investigación sobre. Se proporcionan las funciones generales y la estructura del protocolo RTP/RTCP y se proporciona un plan de implementación para construir un servidor de medios de transmisión básico. Los experimentos han demostrado que puede cumplir con los requisitos de múltiples clientes de archivos y en tiempo real al mismo tiempo. tiempo, y se ha aplicado a un sistema de monitorización remota