Creación de Salas

21 abril 2010 1 comentario
  • Vamos a «Aplicaciones -> Access Grid 3 -> Configure -> Venue Manager»

  • Se nos abre la ventana «Venue Management». Aquí escribimos las dirección de nuestro propio servidor y pulsamos el botón «Go»

  • En la pestaña «Venues», pulsamos sobre el botón «Add» para añadir una nueva sala

  • En la nueva ventana introducimos el nombre de la sala en «Title» y una descripción en «Description». Si marcamos la casilla «Set this venue as default», esta sala será donde entren por defecto los usuarios al conectarse al servidor. Pulsamos sobre «Ok» para terminar de añadirla.

  • Ahora en la ventana «Venue Management» nos aparece nuestra nueva sala en la pestaña «Venues»

  • Si queremos añadir nuestro servidor para no escribir la dirección en otra ocasión, nos vamos en la ventana de «Venue Management» a «My servers -> Add server…»

  • Le damos un nombre y escribimos la dirección (si no hemos cerrado la ventana de «Venue Management», este campo estará editado)

  • Ahora vemos en el menu «My servers» de la ventana «Venue Management» que nos aparece como una nueva opción. Pulsando en ella conecta automaticamente.

Configuración General de un Servidor de Salas

21 abril 2010 5 comentarios

Recordemos que para configurar un Servidor de Salas hay que hacer lo siguiente:

  • Nos dirijimos a Aplicaciones -> Access Grid 3 -> Configure -> Venue Manager, o bien, desde una terminal escribimos VenueManagement3.py:

  • Se nos abre la ventana «Venue Management». Aquí escribimos las dirección de nuestro propio servidor y pulsamos el botón «Go»:

  • Si conseguimos entrar, nos aparecerá un listado de Salas que tiene creadas nuestro Servidor de Salas

Una vez dentro vemos que la ventana del Gestor de Salas se divide en tres pestañas:

  • Venues: Conjunto de opciones relacionadas con la gestión de Salas
  • Configuration: Conjunto de opciones relacionadas con el direccionamiento y la encriptación
  • Security: Conjunto de opciones relacionadas con el control de acceso al Servidor de Salas

A continuación se detalla cada una de ellas:

Venues (Salas)

En esta pestaña podremos gestionar las Salas que dispondrá nuestro Servidor de Salas. En ella podremos crear Salas, editarlas o borrarlas.

Podemos ver en dicha ventana la siguiente información:

  • A la izquierda aparece el listado de Salas, dentro del bloque Venues.
  • A la derecha aparece la descripción asociada a la Sala seleccionada junto a la URL que se le ha asignado (generado)
  • Por último aparecen los siguientes botones en la parte inferior izquierda:
    • Add: Para añadir/crear una nueva Sala
    • Edit: Para editar/configurar una Sala ya creada
    • Delete: Para eliminar la Sala seleccionada

Crear Salas

Para crear una Sala, puede visitar la sección Creación de salas.

Editar Salas

Para editar una sala puede visitar la sección Edición de salas.

Eliminar una Sala

Sin embargo, eliminar una Sala no tiene ninguna complicación. Basta con seleccionar la Sala que se desea eliminar de la lista de Salas en esta misma ventana y pulsar el botón Delete:

Se nos preguntará si estamos seguros que queremos eliminar la Sala seleccionada:

Por último, nos borrará la Sala seleccionada, así como sus datos asociados (permisos, configuración, etc.).

Configuration

Desde esta pestaña podemos configurar el direccionamiento para la red multicast y la encriptación de los contenidos multimedia que viajen en una sesión de Access Grid.

Multicast Address

  • Standard Range: Si marcamos esta opción, Access Grid aisgnará dinámicamente una dirección IP dentro del rango multicast. Por cuestiones de seguridad, se recomienda utilizar esta opción, a menos que, por otros motivos, esté obligado a introducir una dirección estática. Para ello marque la opción siguiente.
  • Custom Range: Si marcamos esta opción podremos introducir una dirección IP estática (fija), dentro del rango multicast. Para ello, pulsamos el botón Change y nos aparecerá la siguiente ventana:

    • En IP Address introducimos los valores de la IP que queremos establecer
    • En Mask introducimos el valor del puerto que queremos establecer

Encryption

  • Encrypt media: Si activamos esta opción Access Grid encriptará todo flujo de información que viaje por él, añadiendo seguridad para evitar intrusiones o acceso a contenido no deseado. Es decir, si no activamos esta opción, una persona puede captar un flujo si conoce la IP de dicho flujo, por ejemplo, si en una sesión de Access Grid donde los participantes emiten vídeo, si la IP del vídeo de uno de los participantse es el 224.41.101.101:8000, y tenemos esta opción desactivada, otra persona puede capturar su vídeo emitido desde una aplicación determinada introduciendo esta IP. Lo mismo ocurre con el audio, por lo que, normalmente, no es deseado que ésto ocurra. Así que lo recomendado es activar esta opción para añadir algo de seguridad a nuestro Servidor de Salas.

Security

En esta pestaña podemos gestionar el acceso al Servidor de Salas, permitiendo/denegando el acceso a personas para configurar el propio Servidor de Salas. Es decir, por defecto, para configurar el Servidor de Salas hay que ejecutar la aplicación Venue Management en la propia máquina del Servidor de Salas. Sin embargo, si gestionamos los permisos, podemos darnos permisos, a través de los certificados digitales, para poder configurar el Servidor de Salas desde otro PC.

Para ello existen un conjunto de RolesParticipantesAcciones (permisos). Podemos crear/eliminar Roles y crear/eliminar Participantes. Por cada Rol podemos activar/desactivar Acciones. Por último, podemos asignar a los participantes uno o varios Roles.

Todo ésto se realiza pulsando el botón Manage Security que aparece la siguiente ventana:

Se explicará todo lo relacionado con la gestión del control de acceso con más detalle en la sección de Control de Acceso a Salas.

El Gestor de Salas (VenueManager)

21 abril 2010 3 comentarios

Una de las acciones que deseemos realizar en nuestro Servidor de Salas es el poder crear, configurar/editar y eliminar Salas en él. Para ello, el sistema Access Grid incluye una herramienta muy útil, llamada VenueManager, la cual, principalmente, nos permite realizar este tipo de acciones.

Dicha aplicación se encuentra en Aplicaciones->Access Grid 3->Configure->Venue Manager, o bien, desde una terminal, podemos ejecutarlo escribiendoVenueManagement3.py.

Para configurar nuestro Servidor de Salas, en dicha aplicación debemos de introducir la dirección de nuestro Servidor. Para ello, o bien lo hacemos desde la máquina donde se ejecute el Servidor de Salas, o bien, debemos de tener permisos para poder acceder remotamente (en próximas secciones se explicará sobre permisos).

Una vez introducida la dirección, pulsamos sobre Go y accederemos a nuestro Servidor de Salas. A partir de aquí, podremos configurarlo a nuestro gusto.

Si lo desea, para no volver a introducir la dirección completa del Servidor de Salas, puede agregarlo a una lista, parecido a los favoritos de los navegadores de internet. Para ello:

  • Diríjase a MyServers->Add Server:

  • Introduzca en Name el nombre que desea darle al Servidor de Salas, y en URL introduzca la dirección de dicho Servidor de Salas. Por último, pulse OK.

  • Ahora le aparecerá lo que haya introducido en Name en un listado dentro de MyServers.

En esta sección detallaremos cada uno de los elementos que forma parte de esta útil herramienta.

Arranque automático en Ubuntu Server

20 abril 2010 95 comentarios

Desde Ubuntu y, en general, cualquier Sistema Unix, existen dos formas de ejecutar una aplicación al inicio del sistema:

  • Como una aplicación al inicio
  • Como un demonio de arranque

Ambas formas tienen como similitud el poder ejecutar una aplicación al ejecutar el Sistema Operativo, sin embargo, la diferencia entre ambas formas es la forma en que lo hacen.

Si añadimos la aplicación del Servidor de Salas como una aplicación de inicio, el sistema ejecutará todos los procesos de siempre y, después de cargar los datos del usuario que accede al sistema, comienza a ejecutar las aplicaciones indicadas en este método. Es decir, el Servidor de Salas no se ejecutará hasta que el usuario introduzca sus datos de acceso (login y password, siempre y cuando esté configurado el sistema para que los solicite) y cargue sus datos correspondientes.

Sin embargo, si ejecutamos la aplicación del Servidor de Salas como un demonio de arranque, a través de un script, se ejecutará el Servidor de Salas como un servicio más del sistema, por lo que se ejecutará mientras el sistema está cargando. También podemos indicarle una prioridad (cuándo queremos que se ejecute), esto es ventajoso sobre todo si nuestra aplicación depende de otras aplicaciones.

A continuación se detalla el procedimiento a seguir para cada uno de los métodos.

Arranque como una aplicación al inicio

Lo primero es asegurarnos de que el sistema se logea automaticamente al arrancar sin pedirnos la contraseña.

  • Para ello nos dirigimos a «Sistema -> Administración -> Pantalla de acceso»

  • Pulsamos sobre «Desbloquear» y seleccionamos «Acceder como nombredeusuario automaticamente». Presionamos «Cerrar».

Ahora vamos hacer que el «Servidor de sala (Venue Server)» arranque al iniciar sesión.

  • Vamos a «Sistema -> Preferencias -> Aplicaciones al inicio»

  • Se nos abre una ventana en la que pulsamos sobre el botón «Añadir»

  • En la nueva ventana rellenamos los campos. En Nombre «Venue Server», en Orden «VenueServer3.py» y en comentario lo que queramos. Pulsamos «Añadir» y reiniciamos el sistema.

La próxima vez que se reinicie la máquina por cualquier motivo, arrancará automáticamente el Servidor de salas sin intervención humana 🙂

Arranque automático desde un script como demonio (daemon)

Para poder ejecutar el Servidor de Salas como un demonio de arranque debemos de generar nuestro script para dicho fin. Una posible estructura general de un script de arranque podría ser la siguiente:

1. - #!/bin/bash

2.- # Comentarios

3.- Órdenes que se ejecutarán en todos los casos

4.- start() | stop() | restart() | ... (tantas funciones como considere necesarias)

5.- #Llamadas
    case "$1" in
        start)
            # Código a ejecutar cuando llamemos al script con start: nombre_script start
            ;; # Dos ; para indicar fin de este bloque
        stop)
            # Código a ejecutar cuando llamemos al script con start: nombre_script stop
            ;; # Dos ; para indicar fin de este bloque
        restart)
            # Código a ejecutar cuando llamemos al script con start: nombre_script restart
            ;; # Dos ; para indicar fin de este bloque
        ...

        *)  # Para otros casos que no sean los anteriores (recomendado para mensajes de error, etc)
            echo $"Formas de uso: nombre_script {start|stop|restart}" 
6.- esac

7.- exit $RETVAL

Donde:

  1. Indicamos el intérprete que queremos utilizar
  2. Los comentarios pueden estar en cualquier lugar del script. Empiezan por ‘#’ cada línea de comentario.
  3. Se introducirán las órdenes «generales» que se ejecutarían en cualquier caso (ir a una carpeta concreta, crear ficheros temporales, etc.)
  4. Es el conjunto de funciones para cada uno de los casos que queremos que se dé en nuestro script. Los más usuales son start, para ejecutar el script, stop, para detenerlo y restart para reiniciarlo.
  5. Es el bloque donde se analiza con qué función hemos llamado el script
  6. Fin del bloque «case»
  7. Retornamos el valor obtenido en el script

Para ejecutar el Servidor de Salas es necesario que le indiquemos:

  • Nombre del usuario del sistema que ejecuta el Servidor de Salas
  • Directorio personal de dicho usuario (/home/usario)
  • Ruta del ejecutable del Servidor de Salas, ya que, dependiendo del sistema, puede variar. Por ejemplo, en Ubuntu es /usr/bin/VenueServer3.py , sin embargo, en sistemas basados en RPM, suele ser /usr/bin/VenueServer
  • Fichero de bloqueo, como indicador de que ya se está ejecutando el Servidor de Salas, éste se elimina al cerrar la aplicación

Como estos parámetros son variables en diferentes máquinas (ya que cada uno tiene su propio usuario y/o la ruta del ejecutable del VenueServer puede ser diferente), lo ideal es crear un fichero de configuración, con unas variables donde se indiquen estos valores y, luego, cogemos estas variables desde el script para determinar su valor. Es decir, si usted lo desea, bastaría con descargarse nuestros ficheros de configuración y de script, modificar el fichero de configuración, adaptándolo a su sistema, y podrá ejecutar automáticamente su Servidor de Salas. Dicho fichero de configuración se puede almacenar, por ejemplo, en /etc/default/.

Por ejemplo, nuestro fichero podría ser el siguiente:

# Nombre del ejecutable de VenueServer. Normalmente es
# /usr/bin/VenueServer3.py, sin embargo en sistemas Fedora 
# y otros sistemas basados en rpm usan /usr/bin/VenueServer

AGSERVER_EXE=/usr/bin/VenueServer3.py

#
# Login del usuario del sistema (el servidor se ejecutará bajo su propiedad)

AGSERVER_OWNER=uca

#
# Localización del directorio donde quiere que se ejecute el servidor

AGSERVER_HOME=/home/uca

#
# Nombre del fichero de bloqueo del VenueServer

AGSERVER_LOCKFILE=/var/lock/agVenueServer

#

Teniendo en cuenta estas variables y la ruta del fichero de configuración, el demonio del sistema quedaría así:

#!/bin/bash
#
# agVenueServer        Script de arranque para Access Grid Venue Server
#
# chkconfig: - 84 16
# description: Venue server para Access Grid 3.xx
#
# config: /etc/default/agVenueServer.conf

if [ -f /etc/default/agVenueServer.conf ]; then
        . /etc/default/agVenueServer.conf
fi

[ -z ${AGSERVER_OWNER} ] && {
  echo "AGSERVER_OWNER no está establecido. Establézcalo en /etc/default/agVenueServer.conf" 
  exit 1
}
[ -z ${AGSERVER_HOME} ] && {
  echo "AGSERVER_HOME no está establecido. Establézcalo /etc/default/agVenueServer.conf" 
  exit 2
}
[ -z ${AGSERVER_EXE} ] && {
  echo "AGSERVER_EXE no está establecido. Establézcalo /etc/default/agVenueServer.conf" 
  exit 1
}

# Ruta del fichero de bloqueo
prog=VenueServer
lockfile=${AGSERVER_LOCKFILE:-/var/lock/agVenueServer}
RETVAL=0

[ -x ${AGSERVER_EXE} ] || {
  echo "${AGSERVER_EXE} debe existir y ser ejecutable (permisos de ejecución)" 
  exit 3
}

start() {
        echo -n $"Iniciando $prog: " 
    (cd ${AGSERVER_HOME} && su ${AGSERVER_OWNER} -c ${AGSERVER_EXE} &)
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch ${lockfile}
        return $RETVAL
}

stop() {
    echo -n $"Deteniendo $prog ... " 
    pkill -HUP ${prog}
        RETVAL=$?
    [ $RETVAL -ne 0 ] && {
      sleep 3
      echo -n $"... " 
      pkill -TERM ${prog}
    }
    [ $RETVAL -ne 0 ] && {
      sleep 3
      echo -n $"... " 
      pkill -KILL ${prog}
        }
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && rm -f ${lockfile}
}

# Llamadas
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    stop
    start
    ;;
  condrestart)
    if [ -f ${pidfile} ] ; then
        stop
        start
    fi
    ;;
  *)
    echo $"Forma de uso: $prog {start|stop|restart|condrestart}" 
    exit 1
esac

exit $RETVAL

Configuración recomendada para Vic como Productor MPEG4H264

20 abril 2010 7 comentarios

En esta sección se explicará la configuración recomendada si utiliza el códec H264/MPEG4. Si va a utilizar el códec H261 diríjase a la sección Configuración recomendada para Vic como Productor H261.

Si utiliza el Gestor de Servicios

Si se va a configurar la aplicación Vic desde el propio Cliente de Sala de Access Grid, a través del Gestor de Servicios del Nodo, le recomendamos que configure el servicio de vídeo, como Captura y Emisión, de la siguiente manera:

  • Este proceso hay que repetirlo tantas veces como cámaras quiera agregar
    • Agregue, al cliente de Access Grid, el servicio VideoProducerServiceH264 en la máquina de Emisión y Captura. Una vez agregado, le aparecerá una pantalla preguntándole qué fuente de vídeo desea capturar con dicho servicio:
      • Nota: En Linux puede que salga duplicado una misma cámara, una con V4L:, y otra con V4L2. En principio debería de seleccionar el V4L2, sin embargo, no todas las fuentes de vídeo son compatibles con este formato, por lo que deberá elegir V4L.
    • Una vez acepte, se ejecutará la aplicación Vic con la fuente de vídeo añadida y muteada:
    • Si aparece la ventana con la casilla Mute marcada, desmárquela para que empiece a emitir vídeo
    • Hacemos doble click en VideoProducerService, o bien, lo seleccionamos, pulsamos el segundo botón del ratón y elegimos «Configure…»:
    • Nos aparecerá la pantalla de configuración del Vic, como Productor:
    • Establecer los siguientes valores:
      Nota: Recuerde que estos valores son los recomendados para el códec H264/MPEG4, para el códec H261 se explicará a continuación

      • Encoding: MPEG4 (H264 consume más recursos y la diferencia de calidad no es notoria)
      • Standard: PAL
      • Bandwith: 800 kbps
      • FrameRate: 25 fps
      • Quality: 80
      • Capture Size: Medium
    • Reiniciamos el servicio para que surtan efecto los cambios realizados. Recuerde reiniciar el servicio hay que hacer lo siguiente:
      • En el Cliente de Sala (VenueClient), nos dirijimos a (Tools -> Configure node services), también podemos pulsar el último icono de la interfaz del Cliente de Sala:
      • Nos aparecerá la ventana del Gestor de Servicios con el listado de servicios que tenemos añadido en nuestra configuración. Seleccionamos el servicio de Visualizador de Vídeo (VideoProducerService) y pulsamos el segundo botón del ratón. Le damos a Disabled para deshabilitar el servicio. Luego, repetimos el proceso para elegir, esta vez, Enabled, habilitando así, de nuevo, el servicio de Visualizador de Vídeo:

Si utiliza la propia aplicación Vic

  • Este proceso hay que repetirlo tantas veces como cámaras quiera agregar
    • Agregue, al cliente de Access Grid, el servicio VideoProducerServiceH264 en la máquina de Emisión y Captura. Una vez agregado, le aparecerá una pantalla preguntándole qué fuente de vídeo desea capturar con dicho servicio:
      • Nota: En Linux puede que salga duplicado una misma cámara, una con V4L:, y otra con V4L2. En principio debería de seleccionar el V4L2, sin embargo, no todas las fuentes de vídeo son compatibles con este formato, por lo que deberá elegir V4L.
    • Una vez acepte, se ejecutará la aplicación Vic con la fuente de vídeo añadida y muteada:
    • Si aparece la ventana con la casilla Mute marcada, desmárquela para que empiece a emitir vídeo
    • Diríjase a la aplicación Vic relacionada con la cámara añadida y pulse el botón Menu. Le aparecerá la pantalla de configuración. Recuerde que la aplicación está dividida tres partes, nos centraremos en el panel rojo:

      • En Rate Control establezca el valor 800kbps y 25 fps
      • Asegúrese que la opción Transmit está marcada
      • Asegúrese de que está marcado el códec mpeg4 en la lista de códecs
      • En MPEG4/H264 la barra Quality está deshabilitada
      • En la opción Signal elija PAL.
      • En Options marque Use Hardware Encode

Si utiliza un fichero de configuración

Si desea configurar la aplicación Vic, como Productor MPEG4/H264, a través de su fichero de configuración le recomendamos los siguientes valores:

[node]
servicemanagers = servicemanager0 

[servicemanager0]
url =                                  #Si la fuente de vídeo está en una máquina remota hay que indicarlo aquí con su IP
services = service_video_producerMpeg4_0, service_video_producerMpeg4_1 ... #Más otros servicios que tenga en su configuración
builtin = 1
name = 

[service_video_producerMpeg4_0]
packageName = VideoProducerServiceH264.zip
resource = resource_mpeg4_0
serviceConfig = service_video_producerMpeg4_config0

[resource_mpeg4_0]
name = V4L2:/dev/video0               #Este es un ejemplo, pero debe de indicar la ruta de su fuente de vídeo

[service_video_producerMpeg4_config0]
Frame Rate = 25
Encoding = mpeg4
Start Priority = 5
Standard = PAL
Capture Size = Normal
Bandwidth = 800
Port = zc3xx
Quality = 80
Stream Name = V4L2:/dev/video0         #Debe ser el mismo que se haya indicado en [resource_mpeg4_0]

# Añadimos otra cámara

[service_video_producerMpeg4_1]
packageName = VideoProducerServiceH264.zip
resource = resource_mpeg4_1
serviceConfig = service_video_producerMpeg4_config1

[resource_mpeg4_1]
name = V4L2:/dev/video1               #Este es un ejemplo, pero debe de indicar la ruta de su fuente de vídeo

[service_video_producerMpeg4_config1]
Frame Rate = 25
Encoding = mpeg4
Start Priority = 5
Standard = PAL
Capture Size = Normal
Bandwidth = 800
Port = zc3xx
Quality = 80
Stream Name = V4L2:/dev/video1         #Debe ser el mismo que se haya indicado en [resource_mpeg4_1]