Sunday 18 December 2016

Live555 Proxy Server Binary Options

Documentación de los protocolos FFmpeg Este documento describe los protocolos de entrada y salida proporcionados por la biblioteca libavformat. La biblioteca libavformat proporciona algunas opciones globales genéricas, que se pueden establecer en todos los protocolos. Además, cada protocolo puede admitir las llamadas opciones privadas, que son específicas para ese componente. A continuación se muestra la lista de opciones admitidas: protocolwhitelist list (entrada) Establece una lista quot, separada de protocolos permitidos. QuotALLquot coincide con todos los protocolos. Los protocolos prefijados por quot-quot están deshabilitados. Todos los protocolos se permiten de forma predeterminada, pero los protocolos utilizados por otro protocolo (protocolos anidados) están restringidos a un subconjunto por protocolo. Los protocolos son elementos configurados en FFmpeg que permiten el acceso a recursos que requieren protocolos específicos. Cuando configura su compilación FFmpeg, todos los protocolos compatibles se habilitan de forma predeterminada. Puede listar todos los disponibles utilizando la opción de configuración quotndashlist-protocolsquot. Puede desactivar todos los protocolos utilizando la opción de configuración quotndashdisable-protocolsquot, y activar selectivamente un protocolo utilizando la opción quotndashenable-protocol PROTOCOL quot, o puede desactivar un protocolo determinado utilizando la opción quotndashdisable-protocol PROTOCOL quot. La opción quot-protocolsquot de las herramientas ff mostrará la lista de protocolos soportados. Todos los protocolos aceptan las siguientes opciones: Tiempo máximo de espera para las operaciones de lectura / escritura (red) para completar, en microsegundos. Sigue una descripción de los protocolos actualmente disponibles. Envoltura asíncrona de datos para el flujo de entrada. Rellenar datos en un subproceso de fondo, para desacoplar la operación de E / S del subproceso demux. Leer o escribir en un archivo. Una URL de archivo puede tener el formato: donde filename es la ruta del archivo a leer. Se supondrá que una URL que no tiene un prefijo de protocolo es una URL de archivo. Dependiendo de la construcción, también se supondrá que una URL que se parece a una ruta de Windows con la letra de unidad al principio es una URL de archivo (normalmente no es el caso en las compilaciones para sistemas similares a unix). Por ejemplo, para leer desde un archivo input. mpeg con ffmpeg utilice el comando: Este protocolo acepta las siguientes opciones: Truncar archivos existentes en escritura, si se establece en 1. Un valor de 0 impide truncar. El valor predeterminado es 1. Ajuste el tamaño máximo del bloque de operación de E / S, en bytes. El valor predeterminado es INTMAX. Lo que resulta en no limitar el tamaño de bloque solicitado. Establecer este valor razonablemente bajo mejora el tiempo de reacción de solicitud de terminación de usuario, lo cual es valioso para archivos en medio lento. FTP (protocolo de transferencia de archivos). Leer o escribir en recursos remotos mediante el protocolo FTP. Se requiere sintaxis siguiente. Este protocolo acepta las siguientes opciones. Establezca el tiempo de espera en microsegundos de las operaciones de E / S de socket utilizadas por la operación subyacente de bajo nivel. De forma predeterminada, se establece en -1, lo que significa que no se especifica el tiempo de espera. Contraseña utilizada al iniciar sesión como usuario anónimo. Normalmente se debe usar una dirección de correo electrónico. Control de búsqueda de la conexión durante la codificación. Si se establece en 1, se supone que el recurso es buscable, si se establece en 0 se supone que no se puede buscar. El valor predeterminado es 0. NOTA: El protocolo se puede utilizar como salida, pero se recomienda no hacerlo, a menos que se tenga especial cuidado (pruebas, configuración del servidor personalizado, etc.). Diferentes servidores FTP se comportan de manera diferente durante la operación de búsqueda. Ff herramientas pueden producir contenido incompleto debido a las limitaciones del servidor. Este protocolo acepta las siguientes opciones: Si se establece en 1, el protocolo volverá a intentar la lectura al final del archivo, permitiendo la lectura de archivos que aún se están escribiendo. Para que esto termine, es necesario utilizar la opción rwtimeout o utilizar la función callback de interrupción (para usuarios de API). Lea el flujo segmentado compatible de Apple HTTP Live Streaming como uniforme. Las listas de reproducción M3U8 que describen los segmentos pueden ser recursos HTTP remotos o archivos locales, a los que se accede mediante el protocolo de archivo estándar. El protocolo anidado se declara especificando quot proto quot después del nombre del esquema URI de hls, donde proto es quotfilequot o quothttpquot. El uso de este protocolo se desaconseja - el demuxer hls debería funcionar igual de bien (si no, por favor informe los problemas) y es más completo. Para usar el demuxer hls en su lugar, simplemente use las URL directas a los archivos m3u8. HTTP (protocolo de transferencia de hipertexto). Este protocolo acepta las siguientes opciones: Control de búsqueda de la conexión. Si se establece en 1, se supone que el recurso es buscable, si se establece en 0 se supone que no se puede buscar, si se establece en -1 intentará autodetectarse si es buscable. El valor predeterminado es -1. Si se establece en 1, utilice Chunked Transfer-Encoding para mensajes, el valor predeterminado es 1. Configure un tipo de contenido específico para los mensajes POST o para el modo de escucha. Establecer proxy HTTP para túnel a través, p. Ejemplo: 1234 Establecer encabezados HTTP personalizados, puede reemplazar construido en encabezados predeterminados. El valor debe ser una cadena que codifique los encabezados. Utilice conexiones persistentes si se establece en 1, el valor predeterminado es 0. Establecer datos de publicación HTTP personalizados. Anule el encabezado User-Agent. Si no se especifica, el protocolo utilizará una cadena que describa la compilación libavformat. (QuotLavf / ltversiongtquot) Esta es una opción obsoleta, puede usar useragent en su lugar. Establezca el tiempo de espera en microsegundos de las operaciones de E / S de socket utilizadas por la operación subyacente de bajo nivel. De forma predeterminada, se establece en -1, lo que significa que no se especifica el tiempo de espera. Si se establece entonces eof se trata como un error y causa la reconexión, esto es útil para los flujos en vivo / sin fin. Si se establece, los flujos streamed / non seekable se volverán a conectar en caso de errores. Establece el retraso máximo en segundos después de que abandonar la reconección Exportar el tipo MIME. Si se establece en 1, solicite los metadatos ICY (SHOUTcast) del servidor. Si el servidor soporta esto, los metadatos tienen que ser recuperados por la aplicación leyendo las opciones icymetadataheaders y icymetadatapacket. El valor predeterminado es 1. Si el servidor admite metadatos ICY, contiene los encabezados de respuesta HTTP específicos de ICY, separados por caracteres de nueva línea. Si el servidor admite metadatos ICY y helado se estableció en 1, contiene el último paquete de metadatos no vacíos enviado por el servidor. Debe ser encuestado en intervalos regulares por las aplicaciones interesadas en las actualizaciones de los metadatos del mid-stream. Establezca las cookies para ser enviadas en futuras solicitudes. El formato de cada cookie es el mismo que el valor de un campo de respuesta HTTP Set-Cookie. Múltiples cookies pueden ser delimitadas por un carácter de nueva línea. Establece el desplazamiento de bytes inicial. Trate de limitar la solicitud a bytes que preceden a este desplazamiento. Cuando se utiliza como una opción de cliente, establece el método HTTP para la solicitud. Cuando se utiliza como una opción de servidor que establece el método HTTP que se va a esperar de los clientes. Si el esperado y el método HTTP recibido no coinciden con el cliente se le dará una respuesta de solicitud incorrecta. Cuando está desarmado, el método HTTP no está marcado por ahora. Esto será reemplazado por autodetección en el futuro. Si se establece en 1, se habilita el servidor HTTP experimental. Esto se puede utilizar para enviar datos cuando se utiliza como una opción de salida, o leer datos de un cliente con HTTP POST cuando se utiliza como una opción de entrada. Si se establece en 2, se habilita el servidor HTTP multi-cliente experimental. Esto aún no está implementado en ffmpeg. c o ffserver. c y por lo tanto no debe utilizarse como una opción de línea de comandos. Algunas peticiones HTTP serán denegadas a menos que los valores de cookie se transmitan con la solicitud. La opción cookies permite especificar estas cookies. Como mínimo, cada cookie debe especificar un valor junto con una ruta de acceso y un dominio. Las solicitudes HTTP que coincidan con el dominio y la ruta incluirán automáticamente el valor de cookie en el campo de encabezado de Cookie HTTP. Múltiples cookies pueden ser delimitadas por una nueva línea. La sintaxis necesaria para reproducir una secuencia que especifica una cookie es: Protocolo Icecast (flujo a servidores Icecast) Este protocolo acepta las siguientes opciones: Establezca el género de secuencia. Establezca el nombre de la secuencia. Establezca la descripción del flujo. Establezca la URL del sitio web del stream. Establezca si el flujo debe ser público. El valor predeterminado es 0 (no público). Anule el encabezado User-Agent. Si no se especifica, se utilizará una cadena de la forma quotLavf / ltversiongtquot. Establezca la contraseña de punto de montaje de Icecast. Establezca el tipo de contenido de flujo. Esto debe establecerse si es diferente de audio / mpeg. Esto permite la compatibilidad con las versiones de Icecast 2.4, que no soportan el método HTTP PUT, sino el método SOURCE. MMS (Microsoft Media Server) sobre TCP. MMS (Microsoft Media Server) sobre HTTP. La sintaxis requerida es: Protocolo de salida MD5. Calcula el hash MD5 de los datos a escribir, y en close escribe esto en la salida designada o stdout si no se especifica ninguno. Se puede usar para probar muxers sin escribir un archivo real. Algunos ejemplos siguen. Tenga en cuenta que algunos formatos (normalmente MOV) requieren que el protocolo de salida sea buscable, por lo que fallarán con el protocolo de salida MD5. Protocolo de acceso de tuberías UNIX. Leer y escribir desde UNIX. La sintaxis aceptada es: número es el número correspondiente al descriptor de archivo de la tubería (por ejemplo, 0 para stdin, 1 para stdout, 2 para stderr). Si no se especifica el número, por defecto se utilizará el descriptor de fichero stdout para escribir, stdin para la lectura. Por ejemplo, para leer desde stdin con ffmpeg. Para escribir en stdout con ffmpeg. Este protocolo acepta las siguientes opciones: Establecer el tamaño máximo del bloque de operación de E / S, en bytes. El valor predeterminado es INTMAX. Lo que resulta en no limitar el tamaño de bloque solicitado. Establecer este valor razonablemente bajo mejora el tiempo de reacción de solicitud de terminación de usuario, lo cual es valioso si la transmisión de datos es lenta. Tenga en cuenta que algunos formatos (normalmente MOV), requieren que el protocolo de salida sea buscable, por lo que fallarán con el protocolo de salida de tubería. Pro-MPEG Código de Práctica 3 Release 2 Protocolo FEC. El Pro-MPEG CoP3 FEC es un mecanismo de corrección de errores de avance de paridad 2D para corrientes de transporte MPEG-2 enviadas a través de RTP. Este protocolo debe utilizarse junto con el muxer rtpmpegts y el protocolo rtp. La sintaxis requerida es: Los puertos UDP de destino son el puerto 2 para el flujo FEC de columna y el puerto 4 para el flujo FEC de fila. Este protocolo acepta las siguientes opciones: El número de columnas (4-20, LxD lt 100) El número de filas (4-20, LxD lt 100) Protocolo de mensajería en tiempo real. El protocolo de mensajería en tiempo real (RTMP) se utiliza para transmitir contenido multimedia a través de una red TCP / IP. La sintaxis requerida es: Los parámetros aceptados son: Un nombre de usuario opcional (principalmente para publicar). Una contraseña opcional (principalmente para la publicación). La dirección del servidor RTMP. El número del puerto TCP a utilizar (por defecto es 1935). Es el nombre de la aplicación para acceder. Por lo general, corresponde a la ruta donde se instala la aplicación en el servidor RTMP (por ejemplo, / ondemand /. / Flash / live /, etc.). También puede anular el valor analizado de la URI a través de la opción rtmpapp. Es la ruta o el nombre del recurso a jugar con referencia a la aplicación especificada en la aplicación. Puede ser prefijado por quotmp4: quot. También puede anular el valor analizado desde el URI a través de la opción rtmpplaypath. Actúe como un servidor, escuchando una conexión entrante. Tiempo máximo de espera para la conexión entrante. Implica escuchar. Además, los siguientes parámetros se pueden configurar a través de opciones de línea de comandos (o en código a través de AVOption s): Nombre de la aplicación para conectarse en el servidor RTMP. Esta opción anula el parámetro especificado en el URI. Establezca el tiempo del búfer del cliente en milisegundos. El valor predeterminado es 3000. Parámetros de conexión AMF extra arbitrarios, analizados a partir de una cadena, p. Como B: 1 S: authMe O: 1 NN: código: 1.23 NS: flag: ok O: 0. Cada valor es prefijado por un solo carácter que indica el tipo, B para Boolean, N para el número, S para la secuencia, O para el objeto, o Z para null, seguido por dos puntos. Para Booleanos los datos deben ser 0 o 1 para FALSO o VERDADERO, respectivamente. Del mismo modo para los objetos los datos deben ser 0 o 1 para finalizar o comenzar un objeto, respectivamente. Los elementos de datos en subobjetos se pueden nombrar, prefijando el tipo con rsquoNrsquo y especificando el nombre antes del valor (es decir, NB: myFlag: 1). Esta opción puede usarse varias veces para construir secuencias arbitrarias de AMF. Versión del complemento Flash que se utiliza para ejecutar el reproductor SWF. El valor predeterminado es LNX 9,0,124,2. (Cuando se publica, el valor por defecto es FMLE / 3.0 (compatible con ltlibavformat versiongt).) Número de paquetes descargados en la misma solicitud (sólo RTMPT). El valor predeterminado es 10. Especifique que el medio es una transmisión en tiempo real. No es posible reanudar o buscar en transmisiones en directo. El valor predeterminado es cualquiera. Lo que significa que el suscriptor primero intenta reproducir la transmisión en vivo especificada en el sendero de reproducción. Si no se encuentra una transmisión en vivo de ese nombre, reproduce el flujo grabado. Los otros valores posibles son vivos y registrados. URL de la página web en la que se incrustó el medio. De forma predeterminada, no se enviará ningún valor. Identificador de secuencia para reproducir o publicar. Esta opción anula el parámetro especificado en el URI. Nombre de la transmisión en vivo a la que se suscribirá. De forma predeterminada, no se enviará ningún valor. Sólo se envía si se especifica la opción o si rtmplive está configurado para vivir. SHA256 hash del archivo SWF descomprimido (32 bytes). Tamaño del archivo SWF descomprimido, necesario para SWFVerification. URL del reproductor SWF para los medios. De forma predeterminada, no se enviará ningún valor. URL al archivo swf del reproductor, calcula hash / size automáticamente. URL de la secuencia de destino. El valor predeterminado es proto: // host: port / app. Por ejemplo, para leer con un recurso multimedia llamado quotsamplequot de la aplicación quotvodquot de un servidor RTMP quotmyserverquot: Para publicar en un servidor protegido por contraseña, pasando los nombres de playpath y app por separado: Protocolo de mensajería en tiempo real cifrado. El protocolo de mensajería en tiempo real encriptado (RTMPE) se utiliza para transmitir contenidos multimedia dentro de primitivas criptográficas estándar, consistentes en intercambio de claves Diffie-Hellman y HMACSHA256, generando un par de claves RC4. Real-Time Messaging Protocol a través de una conexión SSL segura. El protocolo de mensajería en tiempo real (RTMPS) se utiliza para transmitir contenido multimedia a través de una conexión cifrada. Protocolo de mensajería en tiempo real tunneled a través de HTTP. El protocolo de mensajería en tiempo real tunneled a través de HTTP (RTMPT) se utiliza para transmitir contenidos multimedia dentro de las solicitudes HTTP para atravesar firewalls. Protocolo de mensajería en tiempo real encriptado tunelizado a través de HTTP. El protocolo de mensajería en tiempo real encriptado tunneled a través de HTTP (RTMPTE) se utiliza para transmitir contenidos multimedia dentro de solicitudes HTTP para atravesar cortafuegos. Protocolo de mensajería en tiempo real tunelado a través de HTTPS. El protocolo de mensajería en tiempo real tunneled a través de HTTPS (RTMPTS) se utiliza para transmitir contenido multimedia dentro de las peticiones HTTPS para atravesar cortafuegos. Libsmbclient permite manipular los recursos de red CIFS / SMB. Se requiere sintaxis siguiente. Este protocolo acepta las siguientes opciones. Establezca el tiempo de espera en milisegundos de las operaciones de E / S de socket utilizadas por la operación de bajo nivel subyacente. De forma predeterminada, se establece en -1, lo que significa que no se especifica el tiempo de espera. Truncar archivos existentes en escritura, si se establece en 1. Un valor de 0 impide truncar. El valor predeterminado es 1. Configure el grupo de trabajo utilizado para realizar las conexiones. Por defecto, no se especifica el grupo de trabajo. Protocolo de transferencia segura de archivos vía libssh Leer o escribir en recursos remotos utilizando el protocolo SFTP. Se requiere sintaxis siguiente. Este protocolo acepta las siguientes opciones. Establezca el tiempo de espera de las operaciones de E / S de socket utilizadas por la operación de bajo nivel subyacente. De forma predeterminada, se establece en -1, lo que significa que no se especifica el tiempo de espera. Truncar archivos existentes en escritura, si se establece en 1. Un valor de 0 impide truncar. El valor predeterminado es 1. Especifique la ruta de acceso del archivo que contiene la clave privada que se utilizará durante la autorización. De forma predeterminada, libssh busca las claves en el Ejemplo: Reproduce un archivo almacenado en un servidor remoto. Real-Time Messaging Protocol y sus variantes soportadas a través de librtmp. Requiere la presencia de los encabezados librtmp y la biblioteca durante la configuración. Necesita configurar explícitamente la compilación con quotndashenable-librtmpquot. Si está activado esto reemplazará el protocolo nativo RTMP. Este protocolo proporciona la mayoría de las funciones del cliente y algunas funciones de servidor necesarias para soportar RTMP, RTMP tunelizado en HTTP (RTMPT), RTMP cifrado (RTMPE), RTMP sobre SSL / TLS (RTMPS) y variantes tunelizadas de estos tipos cifrados (RTMPTE, RTMPTS) . La sintaxis requerida es: donde rtmpproto es una de las cadenas quotrtmpquot, quotrtmptquot, quotrtmpequot, quotrtmpsquot, quotrtmptequot, quotrtmptsquot correspondiente a cada variante RTMP y servidor. Puerto. App y playpath tienen el mismo significado que el especificado para el protocolo RTMP nativo. Contiene una lista de opciones separadas por espacios de la clave de formulario val. Consulte la página de manual de librtmp (man 3 librtmp) para obtener más información. Por ejemplo, para transmitir un archivo en tiempo real a un servidor RTMP mediante ffmpeg. Para reproducir la misma secuencia con ffplay. Protocolo de transporte en tiempo real. La sintaxis requerida para una URL RTP es: rtp: // hostname: port option val. Puerto especifica el puerto RTP a utilizar. Se admiten las siguientes opciones de URL: Establezca el valor TTL (Time-To-Live) (sólo para la multidifusión). Ajuste el puerto RTCP remoto en n. Establezca el puerto RTP local en n. Establezca el puerto RTCP local en n. Establezca el tamaño máximo del paquete (en bytes) en n. Hacer una conexión () en el zócalo UDP (si se establece en 1) o no (si se establece en 0). Lista de direcciones IP de origen permitidas. Lista de direcciones IP de origen no permitidas (bloqueadas). Enviar paquetes a la dirección de origen del último paquete recibido (si se establece en 1) oa una dirección remota predeterminada (si se establece en 0). Establezca el puerto RTP local en n. Esta es una opción obsoleta. En su lugar, localrtpport debe utilizarse. Si rtcpport no está configurado, el puerto RTCP se establecerá en el valor del puerto RTP más 1. Si no está establecido localrtpport (el puerto RTP local), se utilizará cualquier puerto disponible para los puertos RTP y RTCP locales. Si localrtcpport (el puerto RTCP local) no está configurado, se establecerá en el valor del puerto RTP local más 1. Protocolo de transmisión en tiempo real. RTSP no es técnicamente un controlador de protocolo en libavformat, es un demuxer y muxer. El demuxer soporta tanto RTSP normal (con datos transferidos a través de RTP esto es utilizado por, por ejemplo, Apple y Microsoft) y Real-RTSP (con datos transferidos a través de RDT). El muxer se puede utilizar para enviar una secuencia utilizando RTSP ANNOUNCE a un servidor que lo soporta (actualmente servidor Darwin Streaming y servidor Mischa Spiegelmockrsquos RTSP). La sintaxis necesaria para una url RTSP es: Las opciones se pueden establecer en la línea de comandos ffmpeg / ffplay o establecer en código a través de AVOption s o en avformatopeninput. Se admiten las siguientes opciones. No inicie la reproducción inmediatamente si se establece en 1. El valor predeterminado es 0. Establezca los protocolos de transporte RTSP. Acepta los siguientes valores: lsquo udp rsquo Utiliza UDP como protocolo de transporte inferior. Lsquo tcp rsquo Utilice TCP (entrelazado dentro del canal de control RTSP) como protocolo de transporte inferior. Lsquo udpmulticast rsquo Utilice la multidifusión UDP como protocolo de transporte inferior. Lsquo http rsquo Utilice el túnel HTTP como protocolo de transporte inferior, que es útil para pasar proxies. Pueden especificarse múltiples protocolos de transporte inferiores, en ese caso se intentan uno a la vez (si falla la configuración de uno, se intenta probar el siguiente). Para el muxer, sólo se admiten las opciones lsquo tcp rsquo y lsquo udp rsquo. Se aceptan los siguientes valores: lsquo filtersrc rsquo Aceptar paquetes sólo de la dirección y el puerto negociados. Lsquo listen rsquo Actúa como servidor, escuchando una conexión entrante. Lsquo prefertcp rsquo Intente TCP para el transporte RTP primero, si TCP está disponible como transporte RTSP RTP. El valor predeterminado es lsquo none rsquo. Establezca los tipos de medios que se aceptan desde el servidor. Se aceptan los siguientes indicadores: lsquo video rsquo lsquo audio rsquo lsquo data rsquo De forma predeterminada, acepta todos los tipos de medios. Establezca el puerto UDP local mínimo. El valor predeterminado es 5000. Establece el puerto UDP local máximo. El valor predeterminado es 65000. Establezca el tiempo máximo de espera (en segundos) para esperar las conexiones entrantes. Un valor de -1 significa infinito (predeterminado). Esta opción implica que los rtspflags establecidos en lsquo listen rsquo. Establezca el número de paquetes a almacenar en búfer para el manejo de paquetes reordenados. Establece el tiempo de espera TCP I / O en microsegundos. Anule el encabezado User-Agent. Si no se especifica, el valor predeterminado es la cadena del identificador libavformat. Al recibir datos a través de UDP, el demuxer intenta reordenar los paquetes recibidos (ya que pueden llegar fuera de orden, o los paquetes pueden perderse totalmente). Esto se puede desactivar estableciendo el retardo de demuxing máximo a cero (a través del campo maxdelay de AVFormatContext). Cuando esté viendo flujos de Real-RTSP multi-bitrate con ffplay. Las corrientes a mostrar se pueden elegir con - vst n y - ast n para video y audio, respectivamente, y se pueden conmutar al vuelo pulsando vy a. Los siguientes ejemplos hacen uso de las herramientas ffplay y ffmpeg. Mire una corriente sobre UDP, con un retardo de reordenación máximo de 0.5 segundos: Mire una corriente tunneled sobre HTTP: Envíe una corriente en tiempo real a un servidor de RTSP, para que otros miren: Reciba una corriente en tiempo real: Protocolo de la notificación de la sesión (RFC 2974) . Esto no es técnicamente un controlador de protocolo en libavformat, es un muxer y demuxer. Se utiliza para la señalización de flujos RTP, anunciando el SDP para los flujos regularmente en un puerto separado. La sintaxis para un url SAP dado al muxer es: Los paquetes RTP se envían al destino en el puerto de puerto. O al puerto 5004 si no se especifica ningún puerto. Opciones es una lista amp - separated. Se admiten las siguientes opciones: Especifique la dirección IP de destino para el envío de los anuncios. Si se omite, los anuncios se envían a la dirección de difusión múltiple 224.2.127.254 (sap. mcast. net), o ff0e :: 2: 7ffe si se trata de una dirección IPv6. Especifique el puerto para enviar los avisos, por defecto a 9875 si no se especifica. Especifique el valor de tiempo de vida para los anuncios y paquetes RTP, por defecto a 255. Si se establece en 1, envíe todos los flujos RTP en el mismo par de puertos. Si cero (el valor predeterminado), todos los flujos se envían en puertos únicos, con cada flujo en un puerto 2 números más alto que el anterior. VLC / Live555 requiere que se establezca en 1, para poder recibir el flujo. La pila RTP en libavformat para la recepción requiere que todos los flujos se envíen en puertos únicos. Ejemplo de líneas de comando siguen. El servidor proxy LIVE555 es un servidor RTSP de unidifusión - construido a partir del software LIVE555 Streaming Media - que actúa como un proxy para la transmisión de una secuencia en la subred local, para ver en VLC. Uno o más back-end unicast o multicast RTSP / RTP arroyos (es decir, servido por otro servidor (es)). La característica clave de un servidor proxy es que lee cada flujo de fondo sólo una vez, independientemente de cuántos clientes separados se transmiten desde el servidor proxy. Esto hace que el servidor proxy sea ideal, por ejemplo, para la transmisión desde una cámara de vídeo habilitada para RTSP (que podría no ser capaz de manejar más de una conexión a la vez). Funcionamiento básico El servidor proxy LIVE555 es una aplicación de línea de comandos (es decir, consola). La forma más sencilla de ejecutarlo es escribir: donde lturlgt es una URL RTSP (es decir, que comienza con rtsp: //) de un flujo de fondo (por ejemplo, desde una cámara de vídeo). Después de iniciar, el servidor mostrará su propia URL rtsp: // para la secuencia de proxy. Los clientes RTSP pueden utilizar esta URL para reproducir (es decir, recibir) la secuencia proxy. El servidor puede actuar como un proxy para muchos flujos de back-end - no sólo uno. Si introduce más de una URL rtsp: // en la línea de comandos, es decir, después del arranque, el servidor mostrará rtsp: // URLs para el proxy de cada uno. (Por supuesto, usted debe proxy múltiples corrientes sólo si tiene suficiente ancho de banda de red para recibir todos ellos.) Verbose (depuración) de salida Para mostrar salida adicional, mostrando el funcionamiento básico del servidor, agregue la opción - v, antes de la rtsp : // URLs. Para mostrar aún más salida, incluido el intercambio de protocolo RTSP entre el servidor proxy y cada uno de los servidores back-end, utilice la opción - V (es decir, mayúsculas V). (Si tiene problemas con el servidor proxy, recomendamos que utilice la opción - V para tratar de averiguar cuál es el problema.) Transmisión de fondo por TCP De forma predeterminada, el servidor proxy le pedirá que reciba cada flujo de fondo mediante UDP (es decir, recibir paquetes RTP y RTCP como datagramas UDP). A veces, sin embargo, el servidor back-end puede estar detrás de un firewall que bloquea paquetes UDP. Para superar esto, puede utilizar la opción - t para solicitar que cada servidor RTSP de back-end transmita paquetes de datos RTP y RTCP a través de su conexión TCP, en lugar de utilizar paquetes UDP. (Tenga en cuenta que no todos los servidores RTSP admiten streaming TCP y que TCP no se puede utilizar para recibir flujos de multidifusión.) Debe utilizar esta opción sólo si no puede recibir paquetes UDP, porque la transmisión a través de TCP puede provocar que los datos entrantes se retrasen excesivamente . Alternativamente, puede utilizar la opción - T lthttp-port-numbergt para solicitar que se envíe cada flujo de fondo (mediante TCP) a través de un túnel RTSP-sobre-HTTP, utilizando el número de puerto HTTP especificado. El túnel RTSP-over-HTTP puede ser útil si está detrás de un servidor de seguridad solo HTTP. (Tenga en cuenta, sin embargo, que no todos los servidores RTSP de back-end soportarán esto.) Nota: Las opciones - t y - T lthttp-port-numbergt se aplican sólo a las secuencias de fondo. No afectan a los flujos front-end desde el servidor proxy a clientes (potencialmente múltiples) RTSP. Esos flujos pueden ser más de UDP o TCP, dependiendo de lo que cada cliente solicita. Proxy de secuencias de acceso controladas Algunos servidores de back-end RTSP requieren la autenticación del usuario (a través de un nombre de usuario y contraseña) antes de poder acceder a su flujo. Si agrega la opción - u ltusernamegt ltpasswordgt al servidor proxy, utilizará este par ltusernamegt ltpasswordgt, si es necesario, para acceder a cada flujo de fondo. (Para especificar una contraseña vacía, use para ltpasswordgt). Alternativamente, podría intentar incluir el nombre de usuario y la contraseña dentro de la URL rtsp: //, como: rtsp: // ltusernamegt: ltpasswordgt lthostnamegt: ltetc. gt. (Sin embargo, esto no se recomienda porque, en este caso, la contraseña se enviará en forma clara a través de Internet. Además, no todos los servidores back-end aceptarán este tipo de URL.) Tenga en cuenta que también es posible proporcionar Control de acceso al servidor proxy en sí mismo - es decir, desde los clientes front-end RTSP. (Esto, sin embargo, no se hace desde la línea de comandos en su lugar, se hace mediante la modificación del código fuente del servidor proxy. Nota el código incluido por en live555ProxyServer. cpp Especificación de un puerto de servidor RTSP De forma predeterminada, esta aplicación de servidor intenta Utilice uno de los números de puerto del servidor RTSP estándar (554 y 8554), o bien utilice la opción - p ltrtsp-port-numbergt para especificar que el servidor intente utilizar el número de puerto especificado para RTSP (si este puerto no puede ser Proxy de uno o más canales de back-end anunciados Esta aplicación de servidor también puede configurar el proxy para un flujo de back-end que se anuncia usando un comando REGISTER RTSP. El anuncio, que especifica la URL rtsp: // de la secuencia de fondo, puede ser enviado por el propio servidor de back-end o por alguna aplicación de terceros.) Para dar a la aplicación de servidor esta funcionalidad, iníciela con la - R opción de línea de comandos. (Si utiliza esta opción, puede omitir la introducción de cualquier URL rtsp: // en la línea de comandos.) La secuencia de proxy será accesible desde el servidor proxy mediante un rtsp: // URL que se anunciará en la consola. Como característica especial - si el parámetro reuseconnection se estableció en los comandos REGISTER Transporte: encabezado - el servidor proxy consigue reutilizar la conexión TCP en la que recibió el comando REGISTER. Esto puede ser útil si el servidor de back-end streams está detrás de un cortafuegos o NAT, pero el servidor proxy se ejecuta en Internet pública. (En este caso, también puede usar la opción - t para solicitar que el servidor back-end también envíe sus paquetes RTP / RTCP en esta misma conexión TCP). REGISTER es un comando RTSP personalizado, desarrollado por Live Networks, Inc. Actualmente no es estándar, pero se describe en un IETF Internet-Draft. Si utiliza la opción - R, también debe utilizar la opción - U ltusernamegt ltpasswordgt, que especifica un nombre de usuario y una contraseña que se deben utilizar para autenticar el comando REGISTER entrante. (Tenga en cuenta la diferencia entre el comando - u, que especifica un nombre de usuario y una contraseña que se utilizarán para acceder a los flujos de fondo y el comando - U, que especifica un nombre de usuario y una contraseña para autenticar los comandos REGISTER entrantes). RegisterRTSPStream - incluido en el directorio testProgs - se puede utilizar para registrar un flujo de fondo con un servidor proxy. Código fuente y soporte Debido a que esta aplicación está destinada a profesionales de redes informáticas en lugar de a usuarios finales ocasionales, no lo ponemos a disposición como un binario preconstruido. En su lugar, debe construirlo usted mismo, desde el código fuente. Para ello, debe descargar y crear el software LIVE555 Streaming Media. Tenga en cuenta que la aplicación LIVE555 Proxy Server se incluye en el subdirectorio proxyServer. El soporte para el servidor proxy LIVE555 (y el resto del código LIVE555 Streaming Media) se proporciona a través de nuestra lista de correo de desarrolladores: live-devellists. live555. Tenga en cuenta que primero debe suscribirse a la lista de correo antes de poder publicarla. También lea las preguntas frecuentes antes de publicar en la lista de correo. LIVE555 y el logotipo de Live Networks son marcas registradas de Live Networks, Inc. RTSP (Real-Time Stream Protocol) Es un protocolo de capa de aplicación basado en el texto, en el aspecto de la gramática y algunos parámetros del mensaje, similar al protocolo RTSP y al protocolo HTTP . RTSP se utiliza para transferir el flujo de medios de control se establece, que desempeña el papel de control remoto para los servicios multimedia. RTSP no se utiliza para la transmisión de datos. La entrega de los datos de los medios se puede hacer por el protocolo RTP / RTCP. El proceso básico de la operación RTSP En primer lugar, el cliente se conecta al servidor de transmisión y envía un comando OPTIONS recibido del método de consulta de respuesta del servidor proporcionado por el servidor, enviando comandos DESCRIBE para consultar un archivo de medios de información SDP. El servidor de transmisión a través de una descripción SDP de respuesta, información de respuesta incluyendo la cantidad de flujo, el tipo de medio y otra información. El análisis de cliente descrito en el SDP y para cada flujo envía un comando SETUP en la sesión SETUP, el comando le dice al servidor que recibe el puerto de datos de medios. Se ha completado la configuración de la conexión de medios de transmisión, el cliente envía un comando PLAY, el servidor comienza streamingdata. Durante la reproducción el cliente puede reproducir en el servidor para enviar PAUSE y otro flujo de comando y control. La comunicación se ha completado, el cliente puede enviar el comando TERADOWN para finalizar una sesión de transmisión. Es un cliente y un servidor completos a través de la captura de Wireshark por la interacción RTSP. La fuente negra indica que la solicitud del cliente, la respuesta del servidor de fuentes rojo. Se puede encontrar en el formato de protocolo RTSP y el protocolo HTTP es muy similar, son el protocolo basado en texto, la gramática es básicamente la misma. Pero no son lo mismo, la principal diferencia: En primer lugar, el nombre del método es diferente. RTSP agregó DESCRIBE, SETUP, PLAY etc. En segundo lugar, el protocolo HTTP es el protocolo sin estado, no enviando ningún método entre la relación de orden aparente. Mientras que el RTSP es un estado del protocolo, el método existente de relación de órdenes. In HTTP protocol, data can be transmitted within the belt load data, such as Webpage data. While the RTSP only provides streaming control, does not deliver streaming media data. Streaming media data can be transmitted by way of RTP/RTCP. Two, the RTSP message 1 RTSP request message format The method name URL RTSP version CRLF Message header CRLF CRLF Enter the message body Method names including OPTIONS, DESCRIBE, SETUP, PLAY, TEARDOWN etc. URL is the recipients address, such as: RTSP://192.168.0.1 /video1.3gp. The RTSP version is RTSP/1.0 The message of each will end with a newline, in order to facilitate the identification of the message header, the last line of the two carriage return . The message body sometimes is optional. 2 response message format RTSP version of the state code corresponding to the text interpretation newline Message header CRLF CRLF Enter the message body The RTSP version is RTSP/1.0. Status code indicates the corresponding message execution results. Partial status code and text explanation list as follows: The status code text explanation 200 The success of OK implementation 400 Bad Request error request 404 Not Found not found 500 Internal Internal Server Error server error 3 different methods in detail The client uses OPTION to query the server to provide. The server in the public field are given to provide their own set of methods. From the above data can be seen in this server provides OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, GETPARAMETER, SETPARAMETER, PAUSE. etc. The OPTIONS method is not necessary. The client can bypass the OPTIONS, directly to the server to send other messages. The CSeq field represents the request number. Each client request will be assigned a number. Each request message will correspond to a same ordinal response message. The OPTIONS message can be sent at any time. Some clients will timing OPTION to send the message to the server. While the server can also be whether the timing of received OPTIONS messages through judging whether the client online. But not all clients and servers to do so. The domain for user identification. Different companies or different client. The domain of different client message of content are not the same. Sometimes indicates the client version number, model and so on. Using VLC as the client specified in the field below the dialogue, and to publish the number and use the LIVE555 version of the library. The DESCRIBE message is sent by the client to the server for the client, get relevant description request media filespecified in the link. is generally SDP information. SDP(Session Description Protocol)Contains a description, media encoding type, media session rate and other information. For streaming media services, the following domain is in the SDP must contain. When a video contains audio also includes video, there will be more than one of the above structure. Each media description starts with M. The green and yellow background font respectively on the video and audio media description. The Accept field in the request is used to specify the client can receive media description information types, here for the SDP information. M is also called the media, described the sender support media type and other information, to explain in detail. maudio 3458 RTP/AVP 0 96 97 The first parameter to audio for media name: show the audio type. The second parameter is the port number 3488, showed that UE in the local port to send 3458 audio stream. The third parameter RTP/AVP as the transport protocol, RTP protocol based on UDP. Fourth to seven parameters for the four kinds of payload type number support. Properties for a media, to attribute the name: attribute value method. Format: artpmap:ltpayload type gt ltencoding namegt Payload type 0 fixed assigned to PCMU, Coding scheme payload type 96 corresponding to G.726, dynamic distribution. Payload type 97 corresponding encoding for the adaptive multi rate wideband coding (AMR-WB), dynamic allocation. mvideo 3400 RTP/AVP 98 99 The first parameter to the video for the media name: show the video type. The second parameter is the port number 3400, showed that UE in the local port 3400 send video stream. The third parameter RTP/AVP as the transport protocol, said RTP over UDP. Fourth, five parameters are given. Two kinds of payload type number Coding scheme payload Type 98 corresponding to MPV, dynamic distribution. Payload type 97 corresponding encoding for the H.261, as dynamic allocation. The SETUP message is used to determine the transfer mechanism, establishing a RTSP session. The client can also set up RTSP again after sending a SETUP request to change the transmission parameters for playing streaming media server may agree with these parameters. If you do not agree, will respond 455 Method Not Valid In This State. The head of the Transport Request field in the data transmission parameters specified acceptable to the client, The Transport header field in Response contains the server after confirmation of transmission parameters. If the request does not contain a SessionID, then the server will produce a SessionID. From the top of the SETUP session can be seen in the RTP port even said, RTCP for the TCP port adjacent odd port. Shown above is RTP over UDP. The following for the use of RTP over TCP SETUP dialogue. You can see the Transport SETUP command for the RTP/AVP/TCP field, and many a interleaved0-1 field. Because the RTP over TCP RTP and RTCP packets are sent to the same TCP port, so use the interleaved value to distinguish whether the RTP or the RTCP package. Interleaved0 said the RTP packet, RTCP packet interleaved1. The PLAY method notifies the server according to the mechanism of SETUP specified in the start data transfer. The server will PLAY message from the specified start time range to transmit data, until the end of. The server may be PLAY requests in the queue, after an PLAY request needs to wait before an PLAY request is completed can be implemented. Range specifies the playback start time. If you receive a message in the specified time, so play immediately began. Excluding the first Range PLAY request is legitimate, the media began to flow from the position in the world, until the media stream is suspended. If the media flow through PAUSE pause, media contribute at the point of suspension to transmission. If the media stream is playing, so the PLAY request will not work. The client can use this to test whether the server survival. The Url field is a streaming link address corresponds to the RTP parameter, the SEQ field of streaming media first packet sequence number, rtptime for the range domain corresponding to the RTP timestamp PAUSE message server paused transmission stream transmission. If the request URL specific media stream, then only the media player is suspended. You can specify only pause audio, then play will mute. If the request URL specifies a set of flow, then the transmission of all streams in the group will be suspended. The server may not support PAUSE message. For example, the real-time stream may not support pause. When a server does not support a message, will respond to the client501 Not Implemented. PAUSE request may contain a Range head, is used to specify the media stream pause time point, called the point of suspension. The head of the Range must contain a precise value, instead of a time range. If the Range header specifies a time beyond the scope of the PLAY request, the server will return457 Invalid Range. If Range is missing, then immediately suspend suspended in received news media stream transmission, and will pause point set to the current playback time. TEARDOWN for the termination of a given URL media streaming, and release the related resources and the media stream. Three, RTP/RTCP protocol RTP is the real time transport protocol (Real-Time Transport Protocol) abbreviation. The real time transport protocol for multimedia data flow. Usually based on UDP, can also be based on TCP. Some people will be classified as application layer protocol, also some people will return to its transport layer protocol, which can be. The Rtp protocol provides a timestamp and sequence number. Timestamp sender is arranged in sampling, after the receiver, in accordance with the time stamp are playing. RTP itself only to ensure the transmission of real-time data, and not for in order delivery of data packets for reliable transport mechanism, also do not provide flow and congestion control, it relies on RTCP to provide these services. The version number (V): 0-1 2b is used to identify the version of RTP used in. Fill bits (P): 2 1b if the bit is set to 1, the tail of the RTP package with padding bytes added. Extended (X):3 1b if the bit is set to 1, the tail of the RTP packets with additional extension header. CSRC counter (CC): the number of CSRC 4-7 4B fixed head following after. The marked position (M): 8 1b interpretation of the bit by the configuration document. Load type (PT): type 9-15 7b identifies the RTP load. Serial number (SN): 16- 31 16b sender sending each a RTP package will be the domain value plus 1, the receiver can be detected by the sequence number to determine whether the RTP packet loss. Note: the initial sequence number value is random. Time stamp: sampling time of the first byte of the packet in 32 32b. The time stamp is an initial value, and increased with the passage of time. Even if no packets are sent, the time stamp will not increase. The time stamp is removing jitter and synchronize the essential. SSRC: synchronization source identifier: 32b RTP package source, cannot have the same two SSRC value in the same session of RTP. This field is based on the algorithm of randomly generated certain. CSRC List: contribution to the source list 0-15, each 32B to all RTP package source new packet identifier for a RTP mixers contribution. The RTCP protocol RTCP is the real time control protocol (Real-Time Control Protocol) abbreviation. RTCP is usually used in conjunction with the RTP, is used to manage the transmission quality in the current process between the exchange of information. During the RTP session, the participants periodically transmitting RTCP packet, RTCP packet contains the number of sent packets, the number of lost packets and other statistical data. The server can use to change the transmission rate of the dynamic information, or even change the payload type. With the use of RTP and RTCP, can effectively and with minimal cost to achieve the best transmission efficiency, very suitable for the transmission of real time flow. RTSP usually uses RTP protocol to transport real-time streaming, RTP general use of even and odd port, port RTCP using adjacent, namely the RTP port number 1. In the RTCP communication control, RTCP protocol function is realized by different types of RTCP packages. RTCP is also based on the UDP packet transmission, there are five main types of packets: 1.SR: The sender report, issued by the application sends a RTP datagram or end. 2.RR: The receiving end report, but the application is not accepted by sending a RTP datagram or from the end. 3.SDES: source description, the carrier identification information associated with the session members, such as user name, e-mail, phone etc. 4.BYE: notify other members left, back in the notice will exit the session. 5.APP: defined by the application itself, as an extension to the RTCP protocol. Version (V) with the RTP Baotou: Department of Fill (P) with the RTP Baotou: Department of. The receiving report counter (RC): number of the receiving report of block 5B in the SR package. Packet type (PT): 8bit SR packet type 200 Length (length) of:SR package to 32bit for 1 units of length minus 1 Synchrotron source (SSRC) synchronization source identifier:SR packet transmission. As with the corresponding RTP package SSRC. NTP timestamp (Network Time Protocol): SR absolute time packets when. Used to synchronize different flow. RTP timestamp: corresponding to the NTP timestamp, with the same initial value and the timestamp in the RTP package. Sends Packet count: From the beginning of the total number of bytes of data to produce effective this time the SR package in the sender transmits data, excluding the head and filling, the sender SSRC, the domain to be cleared. The SSRC identifier synchronization source n: contained in the report is the statistical information packets received from the source. Loss rate: the last show from SR or RR packets sent according to the loss rate from the source n sends a RTP packet. The cumulative loss of data: accept the total number of SSRCn packets to send SR the time SSRCn transmission loss of RTP from the beginning. Extended maximum sequence number received from the maximum sequence number: data from the RTP package SSRCn received. Receiving jitter (Interarrival jitter):RTP packet reception time variance estimation. The last time SR time stamp (Last SR): the latest from NTP timestamp SSRCn received SR packets in the intermediate 32bit. If you have not received SR packet, is 0. The last time dependent SR delay (Delay since Last SR): from the last SSRCn received SR packet to the packet transmission delay. Audio and video synchronization Transmission of audio and video stream in two different RTP session, each RTP packet has its own time stamp, while the RTCP package in the NPT field (Network Protocol Time) absolute time saved can be used to set the audio and video are mapped to the same time axis, so as to realize the synchronization of audio and video. The position of each protocol in TCP/IP This article will introduce the LIVE555 Foundation. 2014.8.2 in Zhejiang Hangzhou


No comments:

Post a Comment