Table of Contents
VLS carga su configuración del fichero de configuración vls.cfg, que se supone que se encuentra en el directorio actual o en SYSCONF_DIR/videolan/vls (donde SYSCONF_DIR es /usr/local/etc si instalastes VLS a mano, o es /etc si lo instalastes como un paquete debian).
Para escribir un fichero vls.cfg, usa como punto de partida el proporcionado con VLS .
El fichero de configuración vls.cfg está dividido en secciones, y cada sección puede contener varias variables:
BEGIN "Seccion1" Variable1 = "valor1" Variable2 = "valor2" [...] END BEGIN "Seccion2" Variable1 = "valor1" Variable3 = "valor3" [...] END [...]
Todos los nombres de sección, nombres de variable y valores no son case-sensitive. Puede haber secciones y subsecciones vacías. Los comentarios deben comenzar con un carácter #. Algunas variables tienen un valor por defecto; por lo que se puede omitir declararlas, y tendrán su valor por defecto.
A continuación se explican todas las secciones que se pueden encontrar en el fichero vls.cfg:
Esta sección contiene los parámetros globales.
LogFile = "name"
Nombre del fichero de logs de VLS. Si se deja vacío "", no se crea fichero de logs. Por defecto es "vls.log".
SystemLog = "[disable|enable]"
Generando Logs en el SystemLog. De momento, sólo está implementado el SystemLog usando syslogd: compile con la opción ./configure --enable-syslog.
Si VLS es ejecutado como vlsd, entonces la siguiente configuración es obligatoria:
BEGIN "Vls" LogFile = "" SystemLog = "enabled" ScreenLog = "disabled" END
ScreenLog = "[disable|enable]"
Generando mensajes de log en la consola.
Ejemplo:
BEGIN "Vls" LogFile = "vls.log" SystemLog = "disable" ScreenLog = "enable" END
En esta sección, se pueden definir lo grupos de usuarios, y qué comandos son permitidos para estos usuarios. Para cada grupo que se quiera definir, se debe añadir una línea en el siguiente formato:
groupname = "command1|command2|..."
Esto añade un grupo "groupname", y sus usuarios tienen permitido ejecutar el comando1, comando2, y así sucesivamente. Por el momento, los comandos disponibles son: help, browse, start, suspend, resume, forward, rewind, stop, shutdown, logout.
Ejemplo:
BEGIN "Groups" monitor = "help|browse|logout" master = "help|browse|start|resume|suspend|forward|rewind|stop|shutdown|logout" END
Esta sección contiene una lista de los usuarios con permisos para controlar VLS a través de una interfaz de administración. Por cada usuario, se debe añadir una línea con el siguiente formato:
username = "password:groupname"
Esto añade un usuario "username", que pertenece al grupo "groupname" (definido en la sección "Groups") y que puede autenticarse con la contraseña "password".
Bajo Unix/Linux, la contraseña debe estar encriptada, con una herramienta como mkpasswd, o con la función UNIX "crypt".
Bajo Windows, la contraseña debe estar en limpio.
Ejemplo para Unix/Linux:
BEGIN "Users" monitor = "3BcKWoiQn0vi6:monitor" # password es 'monitor' admin = "42BKiCguFAL/c:master" # password es 'Vir4Gv5S' END
En esta sección, se puede configurar la interfaz de administración Telnet.
LocalPort = "port"
Define qué puerto será utilizado por el servidor Telnet. El puerto por defecto es "9999" .
Domain = "domain"
Se puede utilizar "inet4" o "inet6" (por defecto "inet4"). Si se quiere utilizar direcciones IPv4, utilice "inet4", y si se quiere IPv6, utilice "inet6".
LocalAddress = "IP address"
Define en qué dirección IP estará escuchando el servidor Telnet para aceptar peticiones. Por defecto es "0.0.0.0" (ó "0::0" con IPv6).
Ejemplo:
BEGIN "Telnet" LocalPort = "9999" END
En esta sección, se puede definir qué entradas se quieren usar. Por cada entrada que se necesite, se debe añadir una línea en el siguiente formato:
InputName = "Type"
Esto añade una entrada con el nombre "InputName", del tipo "Type". Como se explicó anteriormente, existen varios tipos de entradas:
"local" para leer de un fichero o un DVD,
"video" para leer de una tarjeta capturadora MPEG,
"dvb" para leer de una tarjeta DVB,
"v4l" para leer de un dispositivo Video4Linux.
Cada entrada debe estar configurada en su propia sección (ver el siguiente párrafo).
Ejemplo:
BEGIN "Inputs" local1 = "local" pvr = "video" dvb1 = "dvb" tuner = "v4l" END
Para cada entrada declarada en la sección "Inputs", excepto para las entradas "local", se debe añadir una sección con el mismo nombre que la entrada correspondiente. Por ejemplo, si se declara una entrada "pvr", debe haber también una sección llamada "pvr". La sintaxis de cada sección depende del tipo de la entrada correspondiente.
Para configurar una entrada local, no se debe hacer nada. Excepto cuando otra estrategia trickplay deba ser usada:
BEGIN "Local1" ProgramCount = "1" TrickPlay = "normal" END
"Local1" es el nombre de la entrada local que se quiere configurar. "ProgramCount" es el número de programas asignados a esta entrada. "TrickPlay" es la estrategia trickplay que se usa en esta entrada (por defecto "normal").
Para configurar una entrada video, se debe añadir una entrada en el siguiente formato:
BEGIN "VideoInputName" Device = "device" Type = "type" END
"VideoInputName" es el nombre de la entrada de vídeo que se quiere configurar. "Device" es la ruta de la tarjeta codificadora MPEG de la que se quiere leer (por defecto es "/dev/video"). "Type" puede ser "Mpeg2-PS" o "Mpeg2-TS", dependiendo de la configuración de la tarjeta (por defecto es "Mpeg2-PS").
Ejemplo para una tarjeta Hauppauge WinTV-PVR-250:
BEGIN "pvr" Device = "/dev/video0" Type = "Mpeg2-PS" END
Para configurar una entrada dvb, se debe añadir una sección en el siguiente formato:
BEGIN "DvbInputName" DeviceNumber = "devicenumber" SendMethod = "0" END
"DvbInputName" es el nombre de la entrada dvb que se quiere configurar. Se debe poner "SendMethod" a "0" si se quiere transmitir el flujo DVB completo o se debe poner a "1" si sólo se quieren transmitir los flujos MPEG de audio y vídeo (por defecto es "0"). "DeviceNumber" es el número de la tarjeta DVB de la que se quiere leer (lee de /dev/ost/dvr<devicenumber>, por defecto es ""). El fichero de configuración dvb es definido por el driver. Se puede encontrar en $HOME/.dvbrc para /dev/dvb/adapter0 ó en $HOME/.dvbrc.X para /dev/dvb/adapterX.
Ejemplo:
BEGIN "dvb1" DeviceNumber = "0" TrickPlay = "normal" END
En esta sección, se pueden definir las salidas que se quieren utilizar. Para cada salida, se debe escribir una línea en el siguiente formato:
ChannelName = "Type"
Esto añade una salida llamada "ChannelName", del tipo "Type". "Type" debe ser "network" o "file". Como las entradas, las salidas deben ser configuradas en su propia sección.
Ejemplo:
BEGIN "Channels" localhost = "network" client1 = "network" client2 = "network" multicast1 = "network" multicast2 = "network" localfile = "file" END
Para cada salida declarada en la sección "Channels", se debe añadir una sección con el mismo nombre que su salida correspondiente. La sintaxis de cada sección depende del tipo de salida.
Para configurar una salida de red, se debe añadir una sección en el siguiente formato:
BEGIN "NetChannelName" Domain = "Domain" Type = "Type" SrcHost = "SourceHost" SrcPort = "SourcePort" DstHost = "DestHost" DstPort = "DestPort" TTL = "ttl" Interface = "Interface" END
"NetChannelName" es el nombre de la salida de red que se quiere configurar.
"Domain" puede ser "inet4" si se usan direcciones IPv4, o "inet6" si se usa IPv6 (por defecto es "inet4") .
"Type" puede ser "unicast", "broadcast" o "multicast" (por defecto es "unicast"), dependiendo de lo que se quiera hacer (en la dirección "DstHost").
"SourceHost" es la dirección IP (o nombre DNS) desde la cual VLS enviará el flujo.
"SourcePort" es el puerto UDP desde el que se enviará el flujo.
"DestHost" es la dirección IP (o nombre DNS) a la cual se enviará el flujo.
"DestPort" es el puerto UDP al que se enviará el flujo (por defecto es "1234").
"TTL" es una opción válida sólamente si "Type" es "multicast" (el valor por defecto es "0"). Se puede usar para incremententar el TTL de los paquetes multicast si estos tienen que cruzar varios routers.
"Interface" es una opción sólo soportada bajo GNU/Linux, para forzar que el flujo sea enviado a través de una interfaz de red dada ("eth1" por ejemplo). Para usar esta opción, se deben tener permisos de superusuario.
"SrcHost" y "SrcPort" son opcionales.
Para configurar una salida a fichero, se debe añadir una sección en el siguiente formato:
BEGIN "FileChannelName" FileName = "file" Append = "append" END
"FileChannelName" es el nombre de la salida a fichero que se quiere configurar. "file" es el nombre del fichero donde se guardará el flujo (por defecto "fileout.ts"). "append" puede se "yes" o "no", e indica si VLS tiene que añadir el flujo al final del fichero file, o sobreescribirlo.
Ejemplo:
BEGIN "localhost" # El cliente está en la misma máquina que el servidor DstHost = "localhost" DstPort = "1234" END BEGIN "client1" # unicast hacia client1 DstHost = "192.168.1.2" DstPort = "1234" END BEGIN "client2" # unicast hacia client2 en IPv6 Domain = "inet6" DstHost = "3ffe:ffff::2:12:42" DstPort = "1234" END BEGIN "multicast1" # multicast streaming Type = "multicast" DstHost = "239.2.12.42" DstPort = "1234" TTL = "2" END BEGIN "multicast2" # multicast streaming en IPv6 Domain = "inet6" Type = "multicast" DstHost = "ff08::1" DstPort = "1234" TTL = "12" END BEGIN "localfile" # volcado a fichero FileName = "stream.ts" Append = "no" END
Si se usa, se deberían especificar los campos "SrcHost" y "SrcPort". Por ejemplo:
BEGIN "client1" # El cliente está en la misma máquina que el servidor SrcHost = "192.168.1.1" # IP de VLS SrcPort = "1242" # Puerto Origen : el valor no es importante DstHost = "192.168.1.2" # IP del cliente DstPort = "1234" END
Como se ha explicado anteriormente, se deben definir programas. Cada uno es un flujo MPEG (un fichero, por ejemplo). Para hacer esto, se debe añadir una sección "Input" en el fichero vls.cfg. Cada sección "Input" debe tener la siguiente sintaxis:
BEGIN "Input" FilesPath = "path" ProgramCount = "count" END
"path" es la ruta donde se encuentran los ficheros MPEG (por defecto es el directorio actual). "count" es el número de programas definidos ("0" por defecto).
Para cada programa que se quiera definir, se debe añadir una sección con el siguiente formato:
BEGIN "number" Name = "name" Type = "type" FileName = "file" Device = "device" END
"number" es el número de programa: el primer programa tiene el número 1, el segundo 2, y así sucesivamente.
"name" es el nombre del programa, por el cual se le dirá a VLS que arranque dicho programa (ver el siguiente capítulo "Ejecutando VLS").
"type" puede ser "Mpeg1-PS", "Mpeg2-PS", "Mpeg2-TS", o "DVD". Si el flujo es guardado en un fichero MPEG (*.mpeg, *.mpg, *.vob, y demás...), es probable que se encuentre en formato Mpeg1-PS o Mpeg2-PS.
si "type" se fija a "Mpeg1-PS", "Mpeg2-PS", o "Mpeg2-TS", VLS asumirá que el flujo es guardado en el fichero "file", en el directorio "path" (siendo "path" la variable definida en la sección "Input").
si "type" es "DVD", la variable "Device" será utilizada en lugar de "FileName" (la variable "FilesPath" no se refiere al nombre del lector !). La variable "Device" es el lector DVD ("/dev/hdc" o "/dev/cdrom" por ejemplo). Se puede leer también de un DVD copiado en el disco duro: entonces "Device" es el directorio donde se han guardado los ficheros .vob ("/mnt/data/VIDEO_TS" por ejemplo).
VLS puede transmitir ficheros MPEG que sigan dos criterios
el fichero debe ser MPEG PS (Program Stream) o MPEG TS (Transport Stream), el cual contiene vídeo y audio multiplexado. VLS no puede transmitir MPEG ES (Elementary Stream), es decir, un fichero sólo con audio o con vídeo .
Para saber si un fichero MPEG es MPEG PS, MPEG TS o MPEG ES, hay que leer el fichero con VLC y mirar los mensajes (en la ventana de mensajes o usar el comando vlc -vvv) .
Si usted ve la siguiente línea :
[00000107] main module debug: using demux module "ts_dvbpsi"
significa que el fichero es MPEG TS .
Si usted ve la siguiente línea :
[00000109] main module debug: using demux module "ps"
significa que el fichero es MPEG PS .
Si usted ve la siguiente línea :
[00000109] main module debug: using demux module "es"
significa que el fichero es MPEG ES, y VLS no puede transmitirlo .
la cabecera de la secuencia de vídeo debe repetirse regularmente lo cual es frecuente en el caso de MPEG-2, pero muy raramente en MPEG-1. No hay una manera facíl de saber si la cabecera de la secuencia se repite regularmente. Los ficheros con extensión .vob son normalmente ficheros MPEG-2 y los ficheros con extensión .mpg o .mpeg son normalmente ficheros MPEG-1. .
Puede descargarse este fichero transmitible en MPEG-2 PS para sus pruebas: presentation_short.vob .
Para leer DVDs, se necesita compilar VLS con soporte DVD, que usa libdvdread y libdvdcss. Se necesitan permisos de lectura y escritura en el lector de DVD.
Ejemplo completo:
BEGIN "Input" FilesPath = "/home/videolan/streams" ProgramCount = "4" END BEGIN "1" # Flujo MPEG2 guardado en /home/videolan/streams/Dolby.vob Name = "dolby" FileName = "Dolby.vob" Type = "Mpeg2-PS" END BEGIN "2" # otro fichero Name = "canyon" FileName = "Dolby_Canyon.vob" Type = "Mpeg2-PS" END BEGIN "3" # DVD Name = "dvd" Device = "/dev/cdrom" Type = "Dvd" END BEGIN "4" # DVD guardado en el disco duro Name = "matrix" Device = "/mnt/data/matrix/VIDEO_TS" Type = "Dvd" END