Transcodificar el Receptor DVB Enigma2 Usando ffmpeg en el ODROID-XU4

Cuando me alojo en hoteles durante mis viajes, observo que algunos canales no están disponibles en la televisión. Usando NAT (asignando la IP externa a la IP interna del dispositivo) y http flux, puedo ver algunos de esos canales de TV en mi teléfono móvil o en mi ordenador portátil. Si el ancho de banda es bajo, puedes usar un acceso 3G o superior (350 Kb de velocidad).

En mis primeras pruebas, con una Raspberry Pi 3, usando el decodificador de hardware, sólo podemos transcodificar a 320*240. Descubrí el ODROID-MC1 en un sitio web de reventa, así que me hice con uno. Éste utiliza el Exynos 5520, que al ser más potente, podemos llegar a transcodificar a 512*384.

Comparaciones de precios

  • Raspberry Pi 3 Modelo B + Desktop Starter Kit (16Gb) cuesta 60 € (70$)
  • ODROID-HC1 (SD 16 Gb + PSU) = 70€ (82$)
  • ODROID-XU4 (sd 16 Gb + PSU) = 85€ (100$)

Los SBCs ODROID podrían ser una buena opción, aunque el decodificador de hardware puede tener algunos errores en el procesamiento de MPEG4, así que, usamos solo el formato de video H.264 de momento. La decodificación de video MPEG4/MPEG2 es muy inestable, de modo que estamos obligados a utilizar el codificador/decodificador por software.

La Raspberry Pi 3 Modelo B+ está bien, pero la CPU es menos potente. No obstante, con el decodificador/codificador de hardware, su rendimiento es aceptable. En cualquier caso, no use la red WiFi, sino la red cableada (conector RJ45 ethernet). Con cualquiera de las dos placas, no podemos decodificar video 4K, el cual solo está disponible en ODROID-C1.

Instalación en ODROID-XU4 o en ODROID-HC1

Utilizaremos Ubuntu 18.04 (Versión: 20180531 - https://goo.gl/LKPL9F). Instala el software de https://goo.gl/A9gbkD. Lee las Notas de la versión en ambos enlaces que tienen información muy útil. Después de esto, instalamos el software e2transcoder (la GUI web) y ejecutamos los pasos de https://goo.gl/p9c4Pi. Los pasos incluyen:

$ su
# apt-get install mali-fbdev
# apt-get install ffmpeg
# apt-get install apache2
# apt-get install libav-tools
# apt-get install zip
# apt-get install mc
# apt-get install zip
# apt-get install php
# apt-get install libapache2-mod-php
# apt-get install sqlite
# apt-get install php-sqlite3
# apt-get install php-xml
Coge el archivo zip de e2transcoder usando:
$ wget http://e2transcoder.sharetext.net/wp-content/uploads/files/enigma2_transcoder_072.zip
Expande el archivo zip y copia el contenido de
repertories/DB/*.*
en
/var/www/html/
Ahora deberías ver los siguientes archivos y directorios dentro de la carpeta /var/www/html/:
/admin
/stream
index.html (original )
Index.php
Ejecuta los siguientes comandos:
$ rm /var/www/html/admin/config.php
$ cp /var/www/html/admin/config_linux.php /var/www/html/admin/config.php
Edita el archivo /var/www/html/admin/config.php para que contenga la siguiente información:
// if enigma2 receiver is not used must be 0, but it is not mandatory if receiver is used
$conf["callreceiver"] = 1;
// full path of stream dir
$conf["stream_dir"]="/var/www/html/stream/";
// path of avconv or ffmpeg executable, if avconv of ffmpeg installed $conf["command"] = "/usr/bin/ffmpeg";
from package only need executable name
// web url folder of stream enigma2 receiver configuration
$conf["stream_web_dir"] = "/stream/";
// enigma2 user name
$conf["db_username"] = "root";
// enigma2 password
$conf["db_password"] = "YYYYYY";
// enigma2 IP
$conf["db_ip"] ="192.168.ZZZ.ZZZ";
$conf["parameters"] = "-threads 16 -vcodec h264 -i {stream_url} -s 512x384 -vf fps=21 -maxrate:v 400k -bufsize:v 60000k -ac 1 -ar 22050 -vbr 1 -sn {stream_dir}ystream.m3u8";
// full path of avconv or ffmpeg log
$conf["stream_log"] = "/var/log/stream.log";
Las carpetas /admin/db y /stream/ deberían ser editables por el servidor web. En el caso de Apache, usamos el usuario "apache", para nginx www-data.
$ chown -R www-data /var/www/html/
$ chmod -R 755 /var/www/html/
$ touch /var/log/stream.log
$ chown www-data /var/log/stream.log
Existe un pequeño problema con slqlite. Localiza la libreria sqlite3.so. En Raspberry Pi, está en /usr/lib/php/20151012/sqlite3.so. Busca php.ini normalmente en /etc/php/7.2/apache2/php.ini. En este archivo, encuentra la sección [sqlite3] y cámbiala por:
[sqlite3]
sqlite3.extension_dir =/usr/lib/php/20170718/sqlite3.so
Ahora, en tu navegador web, dirígete a http: //ip_de_tu_receptor/index.php. Introduce la información de inicio de sesión (también en config.php). Ve a la sección "Settings" y haz clic en "Reload E2 Playlist". Regresa a "Channels". Selecciona tu canal haciendo clic en él, y en la parte superior debería ver "TV: nombre de canal". Ten cuidado, no puedes mostrar TV y transcodificar otro canal si no está en el mismo transpondedor. Debería ver el cambio de estado de "Preparing" a "Running" (también puede verificarlo usando: $ tail -f /var /log/stream.log). Dirígete a la sección "Live" y haz clic en el icono de reproducción o introduce el enlace en el reproductor vlc.

Figure 01 - Login
Figura 01 - Inicio de sesión

Figure 02 - Main Page
Figura 02 - Página principal

Figure 03 - HTML5 player in Chrome on SmartPhone
Figura 03 - Reproductor HTML5 en Chrome en un teléfono

Figure 04 - Settings
Figura 04 - Configuraciones

Figure 05 - EPG
Figura 05 - EPG

Para comentarios, preguntas y sugerencias, visita el artículo original en https://forum.odroid.com/viewtopic.php?f=95&t=31358.

Be the first to comment

Leave a Reply