No consigo llamar a un MP3 Cliente / Servidor

iZiDuR

Os pongo en situacion por que me estoy volviendo loco, y no consigo hacerlo. Antes teniamos Volumio en los centros comerciales y las tiendas podian ejecutar desde los PC de cada tienda (clientes) un MP3 que se mandaba la llamada al Servidor del Centro Comercial donde esta instalado Volumio que "paraba la musica" y se reproducia unos Audio que tenia el servidor. La cosa es que el director del Centro Comercial ha roto el contrato con Volumio y estoy intentado hacer lo que hacian las tiendas pero con algo como VLC, etc... pero soy incapaz, me valdria en cualquier lenguaje y yo ya lo amoldo. Pero he intentado con SSH, Putty, VLC, y soy incapaz de crear un .BAT que es lo que tenian antes las tiendas que llemaban a una funcion que era reproducir un MP3 en un servidor.¿alguna idea de como pruedo hacerlo ?

carracho

Si entiendo bien, lo que buscas es un servidor DLNA... igual con "miniDLNA" te llega. Luego con VLC conectarias al servidor...

Erterlo


@echo off
"C:\Program Files\VideoLAN\VLC\vlc.exe" "\servidor\path\al\archivo.mp3"

A mi me ha funcionado ejecutando un archivo mp3 alojado en mi raspberry, crea una carpeta compartida, dale acceso a las tiendas, mete los archivos que quieras que ejecuten y crea un .bat por cada archivo que quieras reproducir.

1 respuesta
iZiDuR

Si, eso me funciona, pero como hago que se pare el audio que está en curso, reproduzca el MP3 y vuelva a seguir a poner el mismo mp3

carracho

Con DLNA podrías tener una lista de temas... e ir intercalando el archivo del anuncio cada X canciones.
Con RTMP podrías tener un stream privado y lanzar el anuncio cuando quieras.

*** Ambas soluciones son para tener lo mismo en todas las tiendas, vamos que si quieres que cada una tenga una playlist diferente no te vale lo que te estoy comentando (igual con DLNA podrías apañar creando diferentes carpetas...)

Si quieres que cada tienda tenga su playlist y de vez en cuando alguien ejecute ese .bat que comentas para pausar la música, reproducir archivo y volver a continuar con la reproducción. Pues, en principio ni p*** idea... pero igual te vale el tener la música sonando en un reproductor X... y con algún programilla tipo https://www.nirsoft.net/utils/sound_volume_view.html#command_line lanzar que se baje el volumen de la aplicación, abrir otro reproductor y reproducir el anuncio... una vez termine volver a subir el volumen al reproductor de la música.
Desconozco si existe una solución integral... también podrías desarrollar algo con tecnologías web (o quizás exista alguna plataforma que te lo haga de gratis, no se de que trata volumio).

iZiDuR

Volumio es una app donde lo instalas como SO lo teniamos en una Ras y estaba genial, por que le instalas un modulo de Spotify y va poniendo musica al azar segun las preferencias que le digas, y cuando una tienda quiere reproducir un MP3 le da un .BAT que le creamos nosotros y lo que hacia era parar spotify reproducia un MP3 que estaba dentro de la Ras añadido a Volumio y cuando terminaba de reproducir el MP3 seguia con Spotify.

iZiDuR

#3 Esto lo conozco pero con ese BAT lo que hago es reproducir un MP3 que esta en el servidor por el reproductor de la propia tienda, y yo necesito que cuando la Tienda ejecute un BAT reproduzca un MP3 que se aloja en el servidor, y que lo reproduzca en el mismo servidor por que es ahi donde esta conectado el hilo musical del Centro Comercial.

1
Erterlo

Has mirado PLEX?

iZiDuR

No, no he mirado Plex, yo Plex lo llegue a usar para reproducir Peliculas que tenia en el Ordenador en la TV, pero claro, como mando la orden desde el PC para que lo reproduzca el otro? Me esta volviendo loco esta mierda y estoy casi 100% que es una tonteria como una casa.

Erterlo

El servidor está basado en Linux o Windows?

VLC tiene una interfaz web para controlarlo.

#!/bin/bash

Datos servidor


SERVER="direccion_del_servidor"
PORT="8080"
PASSWORD="tucontraseña"

Ruta al archivo de música en el servidor


MUSIC_FILE="/ruta/al/archivo.mp3"

detener la reproducción actual


curl --user :$PASSWORD "http://$SERVER:$PORT/requests/status.xml?command=pl_stop"

Espera breve para asegurar que el comando anterior se procese


sleep 1

Comando para iniciar la reproducción del archivo de música


curl --user :$PASSWORD "http://$SERVER:$PORT/requests/status.xml?command=in_play&input=file://$MUSIC_FILE"

Documentation:Command line

1 respuesta
iZiDuR

#10 voy a probarlo, por que el servidor puedo montarle lo que quiera, linux, windows lo que sea, es mas tengo aqui una imagen de ubuntu 22 y veo que tal funciona.

PD. GRACIAS

1
Erterlo

Cómo activar la interfaz web de VLC

Es un poco antiguo, pero al igual todavía te sirve

iZiDuR

He montado una maquina virtual con ubuntu para hacer las pruebas y no consigo que lo reproduzca el audio.

Voy a intentar explicarme de la mejor manera posible, que seguro que asi me ayudais mejor.

¿Que tenemos?

-- Un servidor (PC) que le podemos instalar lo que queramos de SO donde hay van alojados los .MP3 que necesitamos reproducir.

-- Muchos Clientes (todos en la misma RED) (Y todos WINDOWS) Son CAJAS como las que pueden ser del Carrefour, entonces las Cajeras, cuando necesitan abrir una caja mas tienen un "boton" (.bat) que reproduce un .MP3 que esta en el servidor. "Se informa a los clientes que se va a proceder a abrir la caja 3"

En el servidor hay una playlist todo el rato funcionando, donde ese PC (Servidor) esta conectado a unos altavoces por el Centro Comercial.

Cuando la cajera ejecuta el .BAT para la playlist y se reproduce el .MP3 asignado a ese "boton"

Esto es lo que habia realizado pero no funciona.

https://ibb.co/KhW2zQy

1 respuesta
Jastro

#13 te lo digo un poco de cabeza, ya que hace años que no lo hago, pero recuerdo que hace años en mi antigua empresa monte algo parecido usando: https://www.mpg123.de/

@echo off
echo Pausando la reproducción actual...
taskkill /IM "mpg123.exe" /F

timeout /t 2 /nobreak >nul

start /min "" mpg123.exe --pause-on-start --load \\nombre_del_servidor\ruta_completa_hasta_el_mp3\archivo.mp3

timeout /t 5 /nobreak >nul

echo Reanudando la reproducción anterior...
start /min "" mpg123.exe --pause-on-start --load \\nombre_del_servidor\ruta_completa_hasta_el_mp3\reproduccion_anterior.mp3

Igual me la estoy mandando, porque lo estoy haciendo de cabeza, pero creo que era algo asi como lo solventamos

iZiDuR

Esto me funciona! PEROOOO!!! lo reproduce en la misma caja (cliente) no ejecuta el mpg123.exe en el servidor, lo que hace es abrirlo en el propio cliente

Erterlo

Si vas a lanzar el script desde un cliente windows, prueba con powershell dentro de un bat:

Con pwershell no se puede

Erterlo

¿¿Eres capaz de alcanzar a ver el interface web de VLC poniendo en el explorador de algún cliente 192.168.0.155:8080 ??

1 respuesta
Erterlo

SSH y python?

vlc-ctrl 1.0.8

Lo he probado en casa con una máquina virtual como servidor ubuntu y windows como el cliente y funciona.

ssh usuario@ipservidor "vlc-ctrl play -p /home/user/music"
ssh usuario@ipservidor "vlc-ctrl pause"
ssh usuario@ipservidor "vlc-ctrl play -p /home/user/caja1"
ssh usuario@ipservidor "vlc-ctrl pause"
ssh usuario@ipservidor "vlc-ctrl play -p /home/user/music"

iZiDuR

#17 tengo el corta fuegos de las maquinas virtuales desactivado, tanto en el cliente windows 11 192.168.0.100 como en el servidor ubuntu 23 192.168.0.155 las he montado con virtualbox. Aun asi en windows he puesto un regla que deje pasar todo en el puerto 8080 y 80

Activada el interfaz WEB en VLC

Voy a instalar python en el servidor y a meterle esa libreria que mencionas, y despues creare un bat en el cliente (windows) con esta linea:

ssh izidur@192.168.0.155 "vlc-ctrl play -p /home/user/music/caja1.mp3"

1 respuesta
Erterlo

#19 He comentado arriba que con powershell no se podía, me he encontrado con el mismo problema, es un ¿bug? de VLC, no te deja conectar con el usuario en blanco y VLC no permite usuario, así que hay un bucle estúpido que no te deja conectar.

Con el vlc-ctrl si funciona, pero estoy teniendo problemas con el tema de las keys, para no tener que estar metiendo contraseña cada vez que ejecuto el *.bat, me he estado peleando con el puttygen y demás pero me pierdo.

laZAr0

¿Le has preguntado ya al chatgpt?

1 respuesta
iZiDuR

yo justo lo estaba haciendo con putty, y genero la KEY y todo, pero por alguna razon, dice que me peine cuando mando la orden desde el cliente.

iZiDuR

#21 chat gpt se hace la picha un lio xd se pone a contarme historias del mas alla.

laZAr0

Pero eso deberías de ser capaz de hacerlo sin problemas desde el terminal de ubuntu, por ejemplo ejecutando un script desde cada cliente mediante ssh para reproducir la canción deseada en el reproductor (prueba con mpg123, cvlc o mpv). No sé por qué no te funciona, pero debería.

También puedes probar con esto, no lo he usado pero tiene pinta de que podría valerte: https://github.com/fossfreedom/rhythmweb

Erterlo

Yo lo he conseguido como te digo con python y SSH, me ha faltado lo de las keys, pero funcionar funciona.

Prueba primero:
Puedes ver el servidor desde los clientes con SSH?
Puedes conectarte desde línea de comandos del cliente al servidor?

Empieza por comprobar que todos los servicios están corriendo, luego mira que el puerto 22 esté abierto.
Una vez tengas SSH corriendo y tengas acceso, solo tendrías que hacer pip install vlc-ctrl en el servidor y ya.
Luego el tema de las keys, no creo que sea imposible.

1 respuesta
iZiDuR

#25 me cago en la madre que me pario! FUNCIONA!!! joder funciona! bueno... funciona quiere decir que reproduce el mp3 que le digo, ahora viene la otra fiesta, que es como paro la musica actual reproduzco este mp3 y hago que vuelva la musica

1 1 respuesta
Erterlo

#26
ssh usuario@ipservidor "vlc-ctrl pause"
ssh usuario@ipservidor "vlc-ctrl play -p /home/user/music/caja1.mp3"
timeout /t 3 /nobreak
ssh usuario@ipservidor "vlc-ctrl play -p /home/user/playlist.m3u"

Si lo estás haciendo con python y esa libreria.

Puedes crear una playlist y decirle que la reproduzca despues del pause, luego pausas otra vez, le dices que ejecute lo de caja X abierta, pause y play a la playlist

1 1 respuesta
iZiDuR

#27 joder me esta funcionando! conseguido!!!! Gracias Erterio es un crack maquina torbellino yunke!

1 1 respuesta
Erterlo

#28 :joy:

1 respuesta
iZiDuR

#29 Mi guerra que ya es tu guerra no ha terminado!!! jajajaja en las pruebas en casa ha funcionado bien, pero el cliente lo que tiene es Servidor Windows y Clientes Linux, y el python vlc-ctrl es cuando es al contrario, he conseguido una solucion momentanea, que es Instalando VLC en el servidor de windows y una app de android montada en una tablet pueden usarlo remotamente y les he creado una miniapp con accesos directos a las aperturas de caja, pero ese es algo temporal por que les hemos prestado 21 tablets que a mi jefe no le hace gracia.

¿Si fuera al contrario como puedo hacerlo?

:)

1 respuesta

Usuarios habituales

  • Erterlo
  • iZiDuR
  • laZAr0
  • Jastro
  • carracho