Seguimos con lo del proyecto de fin de semana de montar un punto de acceso wifi con un servidor de streaming.
En el post mencionada mostraba como usar icecast2 como servidor de streaming, pero al empezar a conectar dispositivos me he encontrado con una cosa un tanto molesta, que la sincronización era malísima. Icecast2 funciona sobre el protocolo http y no era lo que quería hacer exactamente, sino hacerlo sobre RTSP. Así que en este post veremos como configurar un servidor RTSP y enviaremos el stream de MPD al servidor de streaming RTSP.
Lo primero será descargar el servidor y lo ejecutamos:
root@raspberrypi:~# mkdir mediamtx root@raspberrypi:~# cd mediamtx root@raspberrypi:~# wget https://github.com/bluenviron/mediamtx/releases/download/v1.9.0/mediamtx_v1.9.0_linux_armv7.tar.gz root@raspberrypi:~# tar xvzf mediamtx_v1.9.0_linux_armv7.tar.gz root@raspberrypi:~# ./mediamtx
Para hacer pruebas de como hacer el stream de un fichero mp3 he usado inicialmente gstreamer (que me ha llevado un buen rato para hacerlo funcionar)
root@raspberrypi:~# apt-get install gstreamer1.0-rtsp gstreamer1.0-tools root@raspberrypi:~# gst-launch-1.0 filesrc location=/home/laura/Desktop/2024_09-07-Laura_Mora_Aubert-Silent-P9-200.mp3 ! decodebin ! audioresample ! audioconvert ! opusenc ! audio/x-opus, mapping=stream1 ! rtspclientsink location=rtsp://localhost:8554/test root@raspberrypi:~# gst-launch-1.0 filesrc location=/home/laura/Desktop/2024_09-07-Laura_Mora_Aubert-Silent-P9-200.mp3 ! decodebin ! audioresample ! audioconvert ! voaacenc ! audio/mpeg, mapping=/stream1 ! rtspclientsink location=rtsp://localhost:8554/test
Me he encontrado algunos problemas con el códec que necesitaba, pero esta página me ha ayudado.
the stream doesn't contain any supported codec, which are currently H265, H264, Opus, MPEG-4 Audio
Finalmente en MPD modificamos el fichero /etc/mpd.conf y añadimos un nuevo audio_output
root@raspberrypi:~# vi /etc/mpd.conf audio_output { name "pipe to ffmpeg" type "pipe" enabled "yes" format "48000:16:2" command "ffmpeg -loglevel error -hide_banner…