jueves, 20 de noviembre de 2014

Video Streaming en Linux crtmpserver - Centos

Pasos que se utilizaron para Centos 6.4 x86

Instalan los siguientes paquetes

yum install perl-Net-SSLeay gcc gcc-c++ autoconf automake subversion make openssl-devel dstat

En la guía aparece instalar webmin pero no es necesario para que esto funcione.

yum install perl vim subversion cmake make gcc gcc-c++ openssl-devel
Se descarga el crtmpserver

svn co --username anonymous --password "" https://svn.rtmpd.com/crtmpserver/trun

cambiamos de directorio para hacer la compilación:

cd crtmpserver/builders/cmake

Esta linea compila y indica en que directorio se instalara en este caso /usr/local

cmake -DCRTMPSERVER_INSTALL_PREFIX=/usr/local . 
make install

Editamos del archivo y reemplazar lo siguiente:

  1. rootDirectory="applications"
    por
    rootDirectory="/usr/local/lib/crtmpserver/applications"

Script para iniciar el demonio para Centos

This is the /etc/init.d/crtmpserver script...  Make sure it's set to autorun

#!/bin/bash
#
#       /etc/rc.d/init.d/crtmpserver
# crtmpserver      This shell script takes care of starting and stopping
#
#### BEGIN INIT INFO
# Author: Brian Jones jonesy@cs.princeton.edu
#
# chkconfig: 2345 13 87
# description: crtmpserver is the C-RTMP-Server Service daemon.
### END INIT INFO

# Source function library.
. /etc/init.d/functions

ROOTDIR=/usr/local
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=crtmpserver
DAEMON_ARGS="--daemon /usr/local/etc/crtmpserver.lua"
NAME=crtmpserver
DESC=crtmpserver
PIDFILE=/var/run/$NAME.pid

start() {
        echo -n "Starting crtmpserver Server: "
        if [ -f $PIDFILE ]; then
                PID=`cat $PIDFILE`
                echo crtmpserver already running: $PID
                exit 2;
        else
                daemon $DAEMON $DAEMON_ARGS
                RETVAL=$?
                echo
                [ $RETVAL -eq 0 ] && touch /var/lock/subsys/crtmpserver
                return $RETVAL
        fi

}

stop() {
        echo -n "Shutting down crtmpserver Server: "
        #echo
        killproc crtmpserver
        echo
        rm -f /var/lock/subsys/crtmpserver
        return 0
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status crtmpserver
        ;;
    restart)
        stop
        start
        ;;
    *)
        echo "Usage:  {start|stop|status|restart}"
        exit 1
        ;;
esac
exit $?
En el momento de inicio si se encuentra con algún problema de inicio hay un parche disponible o modificar el fuente como se muestra aquí:

commit cf981ce3034118c6630412bb6c1ac0dee546c8e4
Author: Mariusz Pluciński <mplucinski@speednet.pl>
Date:   Tue Dec 10 16:48:38 2013 +0000

    Do not treat as error situation when SO_REUSEPORT option is not supported

diff --git a/sources/common/src/platform/linux/linuxplatform.cpp b/sources/common/src/platform/linux/linuxplatform.cpp
index 7334c28..5198b47 100644
--- a/sources/common/src/platform/linux/linuxplatform.cpp
+++ b/sources/common/src/platform/linux/linuxplatform.cpp
@@ -256,7 +256,8 @@ bool setFdReuseAddress(SOCKET fd) {
   return false;
  }
 #ifdef SO_REUSEPORT
- if (setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, (char *) & one, sizeof (one)) != 0) {
+ if (setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, (char *) & one, sizeof (one)) != 0 &&
+   errno != ENOPROTOOPT) {
   FATAL("Unable to reuse port");
   return false;
  }

Una vez todo este funcionando para hacer la prueba nos conectamos con este cliente:

https://dl.dropboxusercontent.com/u/2918563/flvplayback.swf

Especificamos la dirección IP del host donde se instalo y luego connect.

Recuerde revisar o verificar la configuración del firewall.

Fuente: http://wiki.rtmpd.com/tutorial_full_centos_build -

O en el blog de adobe http://blogs.adobe.com/osmf/ - http://sourceforge.net/projects/osmf.adobe/files/

En este sitio podran encontrar información para agregar el codigo de html para los video en una pagina web:

https://sites.google.com/site/mori79/html-gadgets/media-players/flash-media-playback

También podria probarse el streaming con este link.
https://dl.dropboxusercontent.com/u/2918563/flvplayback.swf

Paginas adicionales de consulta:

http://www.computerglitch.net/blog/blog/2014/02/18/converting-axis-rtsp-to-rtmp-streams/
https://07556276077253553111.googlegroups.com/attach/85573d00af0715a6/0011-Do-not-treat-as-error-situation-when-SO_REUSEPORT-option-is-not-supported.patch?part=0.11&view=1&vt=ANaJVrF_zSkY-oQjersDcz0_o3W98TrV3_A-xQP1YQ4PuVuL1ktiAu0OUAAYUpLfHMJnyLnrDJA5194zZ2fdc3E8fFq8gI8Fw43HNoRGQJ7QAS6umClVKdQ