Hay muchos reproductores de audio y video, pero me gustaría usar una herramienta para muchas propuestas. Así que me gustaría usar ffplay como reproductor de audio y video.

Para reproducir un archivo, el comando es así.

 ffplay path_to_audio_file.mp3  

pero cómo reproducir una lista de archivos de audio o una lista de videos?

Intenté usar:

ffplay *.mp3 

pero sin éxito, me da un error como este:

Argument "audiofileB.mp3" provided as input filename, but "audiofileA.mp3" was already specified. 

Respuesta

ffplay parece que solo admite un único archivo de entrada, por lo que «necesitará utilizar código para recorrer una lista de archivos de entrada (y posiblemente mezclarlos ); asumiendo salvajemente coreutils (para shuf), tal vez algo como:

find musicdir -type f -name "*.mp3" | shuf | while read f; do ffplay -autoexit -- "$f"; done 

Esto, por supuesto, se romperá horriblemente si hay espacios o líneas nuevas en los nombres de archivo.

(Mi reproductor de música actual es bastante similar, find ~/music -type f -name "*.mp3" | mpg123 --shuffle -Z --list -)

Comentarios

  • Probé tu solución y ' es casi buena, pero … hay algunos problemas relacionados para ffplay que ' no estoy seguro de si deben resolverse en esta pregunta o en otra. uno de los problemas es que ffplay no terminará de reproducir la canción actual y por esta razón no pasará a la siguiente canción al final de la actual hasta que no use la combinación de teclado CTRL + c.
  • @Scantlight the -autoexit parece relevante para ese problema.
  • -autoexit resolvió ese problema. Ahora tengo otro que se puede resolver usando -nodisp … esto deshabilitará la visualización de la forma de onda y cosas similares. Esto evitará crear una nueva ventana y robar el foco de la aplicación de trabajo actual (este fue un comportamiento muy molesto). le gustaría incluir esta opción en su respuesta, como una posible opción para resolver el comportamiento molesto.

Responder

Encontré este hilo mientras escribía una GUI de FFplay en Lazarus / FPC. Ya podía reproducir una lista de archivos caídos y saltar al archivo siguiente / anterior, pero tuve que eliminar el proceso ffmpeg y crear uno nuevo cada vez. Estaba intentando agregar la capacidad de reproducir una lista completa de archivos. La solución alternativa más simple que encontré hasta el momento fue, por supuesto, usar -autoexit y crear un archivo de lista de reproducción con este código Pascal:

begin AssignFile(tfOut, C_FNAME); try rewrite(tfOut); for i:= 0 to Fichiers.Items.Count - 1 do if Fichiers.Selected[i] then begin writeln(tfOut, "file " + #39 + conv(Fichiers.Items[i]) + #39) end; CloseFile(tfOut); except on E: EInOutError do ShowMessage ("File error") end; end; 

Luego, léelo de esta manera:

"ffplay -f concat -safe 0 -i flist.txt -autoexit" 

que es la misma sintaxis que uso para concatenar archivos con FFMPeg.

Ahora estoy buscando una forma adecuada de agregar un retraso si los archivos son archivos de imagen …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *