RAI

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 24

Redes y Aplicaciones 2024-

Internet 25/1

Estudios de Informática, Multimedia y Telecomunicación

Redes y Aplicaciones Internet


Práctica 3. Experimenta con la reproducción en continuo

El objetivo principal de esta práctica es proporcionar una comprensión práctica de la


transmisión de contenidos de vídeo en streaming a través de Internet, utilizando el
protocolo RTMP (Real-Time Messaging Protocol) como base.

RTMP es un protocolo de mensajería en tiempo real que está presente en muchos de


los streamings de vídeo por Internet, tanto en tiempo real como almacenado. RTMP
usa TCP como protocolo de transporte y se utiliza con muchos tipos diferentes de
medios, incluidos televisión en vivo, vídeos y servicios de telefonía por Internet.

En esta práctica os presentamos el reto de configurar un servidor RTMP para emitir


y recibir vídeo almacenado o en tiempo real, utilizando diferentes herramientas y
tecnologías. También aprenderéis a transmitir flujos HLS y DASH compatibles con
las plataformas más modernas.

Podéis encontrar mucha información y detalles de funcionamiento del protocolo


RTMP que os pueden ayudar para llevar a cabo esta práctica en estos enlaces:

https://restream.io/blog/rtmp-streaming/
https://teyuto.com/blog/what-is-rtmp-is-rtmp-dead-advantages-disadvantages-

alternatives DASH lo podéis encontrar en el apartado 2.6 del Kurose-Ross, 8ª

edición (pág. 173).

1
Redes y Aplicaciones 2024-
Internet 25/1

Figura 1. Streaming con RTMP

2
Redes y Aplicaciones 2024-
Internet 25/1

La figura anterior os muestra el funcionamiento básico del protocolo. Primero, se


codifica la señal a enviar mediante codificadores de streaming que, a continuación,
envían la señal codificada al servidor usando el protocolo RTMP, desde el cual se
distribuye al usuario directamente, a CDN o a plataformas de vídeo online.

Esta práctica se desarrollará sobre un servidor Linux 1 (Debian o Ubuntu), en el que


instalaréis el software necesario. Para ello podéis usar una máquina virtual (p.e.
Virtualbox) o una instalación en una máquina real. Al final del documento podéis
encontrar algunos enlaces a distintos tutoriales que explican cómo instalar
VirtualBox, sus extensiones y cómo instalar Linux en Virtualbox. Para el correcto
funcionamiento de las máquinas virtuales puede que tengáis que habilitar el PAE/NX
en la configuración del VirtualBox, tal y como se muestra en la siguiente pantalla:

VirtualBox os conecta por defecto a Internet a través de NAT utilizando el host


anfitrión, pero os interesará trabajar en modo puente para poder conectaros al
servidor desde cualquier máquina en nuestra red. Configurad en modo puente la red
y comprobad que tenéis salida a Internet.

Calificación
Esta práctica consta de cuatro partes, que se han de realizar en orden secuencial
(primero la parte 1, después la parte 2…). La nota irá en función de las partes
entregadas:

Parte 1: Instalación y configuración del servidor Nota máxima C-


Parte 2: Transmisión de streaming almacenado Nota máxima C+
Parte 3: Transmisión de streaming en directo Nota máxima B
Parte 4: Soporte para HLS y DASH Nota máxima A

3
Redes y Aplicaciones 2024-
Internet 25/1

1
Esta práctica ha sido probada en un servidor Debian 11.6 y en un Ubuntu

4
Redes y Aplicaciones 2024-
Internet 25/1

Para obtener los niveles indicados de calificación es necesario realizar todos los
ejercicios y apartados de las partes indicadas. En caso de haber algún ejercicio o
apartado no realizado o incompleto, implicará no obtener la calificación
correspondiente.

Importante: para las capturas de pantalla que se piden, configurad el prompt del
sistema operativo de manera que muestre el día en el que estáis y vuestro nombre
de usuario.

5
Redes y Aplicaciones 2024-
Internet 25/1

Primera parte (nota máxima C-):


Instalación y configuración del servidor
En esta primera parte, instalaréis un servidor web de código abierto Nginx, en el
que configuraréis RTMP para poder transmitir vídeo almacenado o en tiempo real.

Pasos a seguir: instalación

Antes de empezar con la instalación del servidor web Nginx, actualizad vuestro
sistema:

apt update
apt upgrade

La instalación del servidor web Nginx es estándar para cualquier sistema


Ubuntu/Debian y tan simple como teclear el siguiente comando en una consola de
root:

apt install nginx -y

Ahora iniciaréis Nginx y habilitaréis el servicio para que se arranque con el inicio del
sistema (si al arrancar da problemas, podéis comprobar que no tenéis otro servidor
web, por ejemplo, apache2, ejecutándose en el puerto 80):

service nginx start


systemctl enable nginx

Nginx incluye un módulo para transmitir RTMP desde una URL con una
configuración mínima. El módulo Nginx RTMP no se incluye automáticamente con
Nginx, pero podéis instalarlo como un paquete adicional:

apt install libnginx-mod-rtmp -y

Para configurar el servidor RTMP, tenéis que editar el fichero principal de Nginx,
usando el siguiente comando, por ejemplo:

nano /etc/nginx/nginx.conf

6
Redes y Aplicaciones 2024-
Internet 25/1

Al final del fichero, añadid las siguientes directrices:

rtmp {
server {
listen 1935;
chunk_size 4096;
allow publish all;

application live {
live on;
record off;
}
}
}

Comprobad que la configuración es correcta, mediante el comando:

nginx -t

Reiniciad el servicio:

service nginx restart

Si tenéis instalado un firewall, habilitad el puerto de RTMP:

sudo ufw allow 1935/tcp

Ejercicio 1

a) Explicad todos los parámetros de configuración de RTMP que habéis añadido


en el fichero de configuración anterior nginx.conf.

1. listen 1935;
 Este parámetro especifica el puerto en el que el servidor RTMP escuchará las conexiones
entrantes. El puerto 1935 es el estándar para RTMP.
2. chunk_size 4096;
 Define el tamaño de los fragmentos de datos que se envían a través de la conexión RTMP.
Un tamaño mayor puede mejorar la eficiencia del streaming, pero también puede aumentar
la latencia.
3. allow publish all;
 Permite que cualquier cliente pueda publicar streams en el servidor. Esto es útil para
pruebas, pero en un entorno de producción, deberías restringir qué clientes pueden
publicar.
4. application live { ... }
 Dentro de este bloque, se configuran las aplicaciones específicas para el servicio RTMP.
En este caso, se define una aplicación llamada "live".
5. live on;
 Activa el modo en vivo para la aplicación, permitiendo la transmisión en tiempo real.
6. record off;
7
Redes y Aplicaciones 2024-
Internet 25/1
 Desactiva la grabación de las transmisiones entrantes. Si necesitas grabar los streams,
puedes cambiar este valor a "on" y configurar opciones adicionales para definir cómo y
dónde se guardarán los archivos.

b) Añadid tres parámetros de configuración más relacionados con el protocolo


RTMP y explicad por qué creéis interesante tenerlos en cuenta. Mostrad una
captura de pantalla del fichero nginx.conf dónde aparezcan.

Tres parámetros adicionales que podrías considerar:


1. record path /var/recordings;
 Descripción: Especifica la ruta donde se almacenarán las grabaciones de los
streams.
 Importancia: Permite guardar copias de las transmisiones para su posterior revisión
o distribución.
2. record max_size 100M;
 Descripción: Define el tamaño máximo de cada archivo de grabación.
 Importancia: Ayuda a gestionar el espacio en disco y facilita la organización de los
archivos de grabación.
3. exec ffmpeg -i rtmp://localhost/live/$name -c:v libx264 -preset fast -crf 28
/var/www/html/live/$name.mp4;
 Descripción: Utiliza FFmpeg para transcodificar y guardar el stream en formato
MP4.
 Importancia: Permite convertir las transmisiones en formatos más compatibles para
su distribución o almacenamiento.
Así quedaría la configuración en nginx.conf:

8
Redes y Aplicaciones 2024-
Internet 25/1
c) Para verificar que nginx está funcionando correctamente, teclead la siguiente
orden en consola y mostrad el resultado mediante una captura de pantalla:

service nginx status

d) ¿En qué dirección IP se está ejecutando el servidor RTMP? Comprobadlo con el


comando ifconfig o con cualquier otra herramienta similar, mostrándolo
mediante una captura de pantalla.

En este caso, la dirección IP del servidor sería 192.168.1.100.

9
Redes y Aplicaciones 2024-
Internet 25/1

e) ¿En qué puerto se está ejecutando el servidor RTMP? ¿En qué estado está?
Comprobadlo con el comando netstat o con cualquier otra herramienta
similar, mostrándolo mediante una captura de pantalla.

Puerto: El servidor RTMP está configurado para escuchar en el puerto 1935.


Estado: Si ves LISTEN, significa que el servidor está activo y escuchando conexiones en
ese puerto.

f) En cualquier navegador web, introducid la siguiente URL


http://<ip_de_tu_servidor>. Mostrad mediante una captura de pantalla
que el servidor web está correctamente configurado.

10
Redes y Aplicaciones 2024-
Internet 25/1

11
Redes y Aplicaciones 2024-
Internet 25/1

Segunda Parte (nota máxima C+): Transmisión de vídeo almacenado


En esta segunda parte de la práctica, enviaréis al servidor RTMP un vídeo de
ejemplo para su posterior difusión a la red. Si no tenéis un archivo de vídeo en
vuestro ordenador, podéis descargar uno usando el comando yt-dlp, una
herramienta de línea de comandos para descargar vídeos de plataformas como
YouTube. Para usarla también necesitaréis instalar el gestor de paquetes snap en
vuestro servidor:

apt install snapd


snap install core
snap install yt-dlp

Cerrad la sesión, volved a entrar y descargad algún vídeo (con un short es


suficiente) con el comando yt-dlp:

yt-dlp <url del vídeo> -f mp4

Comprobad que tenéis el vídeo descargado en vuestro directorio actual. Si os da


errores de acceso denegado, aseguraros que tenéis permisos para poder escribir en
la carpeta o cambiadlos mediante el comando chmod.

Pasos a seguir: Envío de vídeo almacenado al servidor

Hay varias formas de enviar el vídeo al servidor RTMP. Una opción es usar el
comando ffmpeg, una herramienta muy popular de línea de comandos. Instaladla y
enviad el vídeo al servidor RTMP ejecutando el siguiente comando:

apt install ffmpeg

ffmpeg -re -i "<nombre del fichero descargado>" -c:v copy -c:a aac -ar 44100
-ac 1 -f flv -flvflags no_duration_filesize rtmp://localhost/live/stream

Si os rechaza la conexión, probad a reiniciar el servicio:

service nginx restart

12
Redes y Aplicaciones 2024-
Internet 25/1

Ejercicio 2

a) Explicad qué significan todas las opciones del comando anterior ffmpeg.

ffmpeg -re -i "nombre del fichero descargado" -c:v copy -c:a aac -ar 44100 -ac 1 -f flv
"rtmp://localhost/live/stream"
1. -re: Indica que el archivo de entrada debe ser leído a la velocidad de fotogramas
nativa. Esto es útil para simular una transmisión en tiempo real desde un archivo
local, ya que asegura que los datos se envían en tiempo real en lugar de
procesarse lo más rápido posible.
2. -i "nombre del fichero descargado": Especifica el archivo de entrada (en este
caso, un video descargado previamente).
3. -c:v copy: Copia el flujo de video sin recodificarlo. Esto ahorra tiempo y recursos,
ya que no se realiza ningún procesamiento adicional sobre el video.
4. -c:a aac: Establece el códec de audio como AAC (Advanced Audio Codec), un
formato ampliamente utilizado para streaming debido a su eficiencia y calidad.
5. -ar 44100: Configura la frecuencia de muestreo del audio a 44.1 kHz, que es
estándar para muchos dispositivos y plataformas.
6. -ac 1: Configura el audio en un solo canal (mono). Esto puede ser útil para
reducir el ancho de banda necesario durante la transmisión.
7. -f flv: Especifica el formato de salida como FLV (Flash Video), un contenedor
comúnmente utilizado para transmisiones RTMP.
8. "rtmp://localhost/live/stream": Es la URL del servidor RTMP al que se enviará el
video. Aquí, localhost indica que el servidor está funcionando en la misma
máquina, mientras que live/stream define la ruta o clave del stream.

b) Explicad por qué en la URL a la que estamos enviando el vídeo aparecen las
palabras
live y stream.
En la URL rtmp://localhost/live/stream, las palabras "live" y "stream" tienen los
siguientes significados:
1. live:

13
Redes y Aplicaciones 2024-
Internet 25/1
 Representa una ruta o directorio virtual en el servidor RTMP configurado
para manejar transmisiones en vivo.
 En servidores como NGINX con RTMP module, esta palabra suele estar
asociada con una configuración específica para gestionar streams en
tiempo real.
2. stream:
 Es un identificador único o clave del flujo de transmisión (stream key). Este
nombre permite distinguir entre diferentes transmisiones simultáneas
enviadas al mismo servidor.
 Por ejemplo, si varios usuarios transmiten al mismo servidor RTMP, cada
uno puede usar una clave distinta para identificar su stream.
Estas palabras son configurables y pueden variar según cómo esté configurado el
servidor RTMP.

c) ¿A cuántos frames por segundo se está transmitiendo el vídeo?

ffmpeg -re -i "nombre del fichero descargado" -c:v copy -c:a aac -ar 44100 -ac 1 -f flv
"rtmp://localhost/live/stream"
Análisis:
-c:v copy: Este parámetro indica que el flujo de video se copia tal cual, sin
recodificación. Esto significa que la tasa de fotogramas (FPS) del video de entrada se
mantiene en la salida. El FPS no se modifica explícitamente en este comando.
FPS del archivo de entrada: Dado que no se especifica un cambio de FPS con el
parámetro -r o el filtro fps, la transmisión mantiene el FPS original del archivo de
entrada. Para conocer este valor, puedes inspeccionar el archivo con el siguiente
comando:
bash
ffprobe -v 0 -select_streams v:0 -show_entries stream=r_frame_rate -of
compact=p=0:nk=1 "nombre del fichero descargado"
Esto devolverá una fracción como 30/1, lo que indica que el video tiene 30 FPS. Si el
archivo tiene un FPS variable, se puede usar avg_frame_rate para obtener un
promedio.

14
Redes y Aplicaciones 2024-
Internet 25/1

El FPS de transmisión será igual al FPS original del archivo de entrada, ya que no hay
parámetros en el comando que alteren este valor.

d) Conectaos con VLC o cualquier otro reproductor a la URL


rtmp://<ip_de_tu_servidor>/live/stream mientras el vídeo se esté
subiendo con el programa de streaming ffmpeg. Pegad una captura de pantalla
donde se vea que el vídeo se está reproduciendo.

e) La emisión terminará cuando el vídeo pare. ¿Qué habría que hacer para
reproducirlo en bucle?

Para transmitir el video en bucle indefinidamente, puedo modificar el comando de


ffmpeg de la siguiente manera:
ffmpeg -re -stream_loop -1 -i "nombre del fichero descargado" -c:v copy -c:a aac -ar
44100 -ac 1 -f flv "rtmp://localhost/live/stream"

-stream_loop -1: Esta opción le indica a ffmpeg que debe repetir el video de entrada
indefinidamente. El valor -1 significa un bucle infinito3

f) ¿Cuál es el bitrate medio al que se ha transmitido?

1. Obtener Tamaño del Archivo: Asegúrate de conocer el tamaño del archivo de


video en bytes.
2. Obtener Duración del Video: Usa ffprobe para conocer la duración del video en
segundos. Puedes ejecutar el siguiente comando:
bash
ffprobe -v error -show_entries format=duration -of
default=noprint_wrappers=1:nokey=1 "nombre_del_fichero_descargado"

Bitrate medio kbps = ((Tama o del archivo bytes ×8)/(Duración segundos ))/1000
 Tamaño del archivo: 500,000,000 bytes
 Duración: 600 segundos
El cálculo sería:
Bitrate medio kbps =(500,000,000×8/600)/1000=6666.67 kbps

15
Redes y Aplicaciones 2024-
Internet 25/1

Tercera Parte (nota máxima B)


Transmisión de vídeo en directo con OBS
En el apartado anterior, habéis transmitido una fuente de vídeo estática desde la
línea de comandos. En esta parte, vais a transmitir vídeo en tiempo real desde
vuestro PC a través del servidor RTMP. Para ello usaremos el software de código
abierto Open Broadcaster Software (OBS), muy popular para la transmisión de
streaming en vivo. Podéis descargarlo e instalarlo para vuestro sistema operativo
desde https://obsproject.com/es/download.

Pasos a seguir: Creación de vídeo en directo

Una de las opciones para crear vídeo en tiempo real es transmitir vuestro propio
escritorio. Para ello, configurad primero vuestras credenciales de servicio de
transmisión en el menú Ajustes de OBS. Navegad hasta la opción Emisión-
>Personalizado e introducid las siguientes opciones, configurando la IP la de
vuestro servidor en el campo Servidor, y vuestro usuario de la UOC como Clave de
retransmisión.

16
Redes y Aplicaciones 2024-
Internet 25/1

La transmisión estará disponible en

rtmp://<ip_de_tu_servidor>/live/<usuario_uoc>

Si os da el siguiente error “failed to initialize video. Your GPU may not be


supported, or your graphics drivers may need to be updated.”, lo podéis
solucionar poniendo en la línea de comandos LIBGL_ALWAYS_SOFTWARE=1 obs.

No necesitáis habilitar autenticación, pero sí tenéis que configurar la dirección IP de


transmisión de vídeo, cambiando la línea allow publish all en el fichero de
configuración de Nginx
/etc/nginx/nginx.conf:

...
allow publish 127.0.0.1;
allow publish <tu_dirección_ip_local>;
deny publish all;
...

Comprobad que el test de configuración es satisfactorio y reiniciad Nginx para que


se apliquen los cambios:

nginx –t
service nginx restart

En este momento ya estáis en disposición de crear vídeo en tiempo real para


transmitirlo a través del servidor RTMP. Para ello, el programa OBS se basa en
escenas y fuentes para crear el diseño de nuestro streaming.

Con el programa OBS abierto, fijaos en las ventanas de la parte inferior. Las escenas
son las diferentes composiciones de nuestro vídeo. Podéis usar los controles o hacer
clic derecho en el panel escenas para añadir, borrar o reordenar. De manera similar,
haciendo clic derecho sobre una escena existente podéis renombrarla, duplicarla,
copiar sus propiedades o mostrarla de manera independiente.

Cada escena puede tener distintas fuentes que son las que compondrán nuestra
pantalla. Una fuente es cualquier elemento que queramos visualizar o escuchar en
nuestra escena: cámaras de vídeo, ventanas de aplicaciones, juegos, pantallas,
dispositivos de audio, imágenes, texto, páginas web... Una vez creada la escena,
podéis usar los controles o hacer clic derecho en el panel fuentes para gestionarlas.

Podemos crear una escena con una única fuente, por ejemplo, nuestra cámara
web; otra escena con un juego, un conjunto de diapositivas y una grabación de
audio explicativa. OBS usa una visualización por capas, así que podéis dimensionar
los distintos elementos como creáis conveniente.

Vamos a poner estos conceptos en práctica. Añadid una escena simple en OBS y

17
Redes y Aplicaciones 2024-
Internet 25/1
una fuente de entrada de tipo captura de pantalla:

18
Redes y Aplicaciones 2024-
Internet 25/1

En la parte inferior derecha, pulsad en Iniciar transmisión para enviar vuestra


señal al servidor RTMP.

Ejercicio 3

a) Para comprobar que se está transmitiendo el streaming en tiempo real,


conectaos con VLC o similar a la URL
rtmp://<ip_de_tu_servidor>/live/<usuario_uoc>. Mostradlo mediante
una captura de pantalla.

b) Realiza acciones de usuario sobre la pantalla donde estáis ejecutando OBS y


fijaos en el streaming que estáis visualizando con VLC o similar. ¿Qué es lo que
estáis retransmitiendo?

c) Pensad un vídeo a reproducir que contenga como mínimo tres escenas con
varias fuentes. Explicad vuestra idea y mostrad mediante capturas de pantalla
la configuración de OBS y la reproducción del streaming con VLC.

d) Abrid el programa Wireshark como root antes de empezar la retransmisión del


streaming en vivo. Pegad una captura de pantalla donde se vea el tráfico RTMP
que se ha generado. Podéis filtrar por protocolo RTMP para ver solo esta
interacción. Explicad razonadamente, paquete a paquete, la primera fase de
establecimiento de la conexión (handshake) con la negociación de parámetros
(hasta los paquetes audio/video data).

e) Parad la reproducción del streaming en VLC y OBS. ¿Qué paquetes se generan


en Wireshark? Explicad brevemente la interacción que observéis,
ejemplificándolo con alguna captura de pantalla.

19
Redes y Aplicaciones 2024-
Internet 25/1
El próximo paso es habilitar la página de estadísticas de RTMP. Para ello vais a crear
un host virtual en Nginx:

20
Redes y Aplicaciones 2024-
Internet 25/1

nano /etc/nginx/sites-available/rtmp

Y añadid el siguiente contenido:

server {
listen 8080;
server_name localhost;

# rtmp stat
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root /var/www/html/rtmp;
}

# rtmp control
location /control {
rtmp_control all;
}
}

Cread el directorio /var/www/html/rtmp y copiad ahí el fichero stat.xsl que podéis


encontrar en github:

mkdir /var/www/html/rtmp
cd /var/www/html/rtmp
wget https://raw.githubusercontent.com/arut/nginx-rtmp-module/master/stat.xsl

Por último, si tenéis instalado un firewall, para acceder a la página de estadísticas


hay que abrir otro puerto en vuestro firewall. En el fichero de configuración de Nginx
podéis ver que el puerto donde se está ejecutando es el 8080, por lo que tenéis que
agregar una regla de acceso. Sin embargo, para que nadie más pueda acceder a la
página de estadísticas debéis abrirlo solo para vuestra propia dirección IP:

ufw allow from <ip_de_tu_PC> to any port http-alt

A continuación, activad esta nueva configuración:

ln -s /etc/nginx/sites-available/rtmp /etc/nginx/sites-enabled/rtmp

Comprobad que el test de configuración es satisfactorio y reiniciad Nginx:

nginx –t
service nginx restart

21
Redes y Aplicaciones 2024-
Internet 25/1

Ejercicio 4

Mostrad una captura de pantalla con el acceso de vuestro navegador a la página de


estadísticas de RTMP: http://<ip_servidor>:8080/stat y actualizadla mientras
transmitís vídeo almacenado con VLC conectado. Observad cómo cambian las
estadísticas de transmisión. En caso negativo, reiniciad el VLC para verlas.
Responded a las siguientes preguntas:

a) En relación con la transmisión de audio, indicad:


1. ¿Cuál es el códec que se está usando?
2. ¿Cuál es el bitrate?
3. ¿Cuál es la frecuencia?
4. ¿Y el canal?
b) En relación con la transmisión de vídeo, indicad:
1. ¿Cuál es el códec que se está usando?
2. ¿Cuál es el bitrate?
3. ¿A qué resolución se está transmitiendo?
4. ¿A cuántos frames por segundo?

Cuarta Parte (nota máxima A): Soporte para HLS y DASH


En esta parte aprenderéis cómo enviar un stream por HTTP. Hay dos protocolos que
podéis usar para ello: HLS de Apple y MPEG DASH. El módulo Nginx-RTMP es
compatible con ambos estándares.

Pasos a seguir: Transmisión de vídeo almacenado

Para agregar compatibilidad con HLS y DASH modificad el bloque rtmp en el archivo
de configuración /etc/nginx/nginx.conf y añadid el siguiente contenido dentro
de application live y debajo de record off:

...
hls on;
hls_path /var/www/html/stream/hls;
hls_fragment 3;
hls_playlist_length 60;

dash on;
dash_path /var/www/html/stream/dash;

Abrid el archivo /etc/nginx/sites-available/rtmp y añadid otro servidor al final del


archivo, así como el tipo de datos de aplicación soportado:

...
server {
22
Redes y Aplicaciones 2024-
Internet 25/1

listen 8088;

location / {
add_header Access-Control-Allow-Origin *;
root /var/www/html/stream;
}

types {
application/dash+xml mpd;
}

Si tenéis instalado un firewall, habilitad el nuevo puerto 8088:

ufw allow 8088/tcp

Y cread una carpeta stream en el DocumentRoot de Nginx para poder servir los
archivos HLS y DASH:

mkdir /var/www/html/stream

Comprobad que el test de configuración es satisfactorio y reiniciad Nginx:

nginx –t
service nginx restart

Usad el comando ffmpeg, para enviar vídeos de prueba al servidor RTMP


ejecutando el siguiente comando:

ffmpeg -re -i "<nombre del fichero descargado>" -c:v copy -c:a aac -ar 44100
-ac 1 -f flv –flvflags no_duration_filesize rtmp://localhost/live/stream

Si os rechaza la conexión, probad a reiniciar el servicio:

service nginx restart

Ejercicio 5

a) Explicad todos los parámetros de configuración de RTMP que habéis añadido


en los dos ficheros de configuración anteriores.

b) Comprobad con el comando netstat o con cualquier otra herramienta


similar los servicios que se han configurado, mostrándolo mediante una
captura de pantalla.

23
Redes y Aplicaciones 2024-
Internet 25/1

c) Conectaos con VLC a http://<ip_servidor>:8088/hls/stream.m3u8 y


comprobad que podéis ver el stream HLS por HTTP. Pegad una captura de
pantalla.

d) Abrid el Wireshark y comprobad cómo se transmite el streaming HLS. Podéis


filtrar por puerto para visualizar los paquetes que nos interesan. Analizad la
interacción que se da, desde el inicio de la reproducción hasta su paro. Podéis
pegar capturas de pantalla y explicarlas. ¿En qué campo vemos que el
streaming es HLS?

e) Conectaos con VLC a http://<ip_servidor>:8088/dash/stream.mpd y


comprobad que podéis ver el stream DASH por HTTP. Pegad una captura de
pantalla

f) Abrid el Wireshark y comprobad cómo se transmite el streaming DASH. Podéis


filtrar por puerto para visualizar los paquetes que nos interesan. Analizad la
interacción que se da, desde el inicio de la reproducción hasta su paro. Podéis
pegar capturas de pantalla y explicarlas. ¿En qué campo vemos que el
streaming es DASH?

g) ¿Hay diferencias entre HLS y DASH? Comentadlas.

Referencias

● Página del proyecto OBS:


https://obsproject.com/es/download
● Página web del proyecto Videolan:
http://www.videolan.org
● Documentación sobre VirtualBox:
https://www.virtualbox.org/wiki/Documentation
● Cómo instalar VirtualBox:
https://www.wikihow.com/Install-VirtualBox
● Cómo instalar VirtualBox Extension Pack:
https://www.youtube.com/watch?v=mwKmxxRbvws
● Cómo instalar Linux en Windows con VirtualBox:
https://itsfoss.com/install-linux-in-virtualbox/

24

También podría gustarte