Il existe de nombreux lecteurs audio et vidéo, mais jaimerais utiliser un outil pour beaucoup proposer. Je voudrais donc utiliser ffplay
comme lecteur audio et vidéo.
Pour lire un seul fichier, la commande est comme ceci.
ffplay path_to_audio_file.mp3
mais comment lire une liste de des fichiers audio ou une liste de vidéos?
Jai essayé dutiliser:
ffplay *.mp3
mais sans succès, cela me donne une erreur comme celle-ci:
Argument "audiofileB.mp3" provided as input filename, but "audiofileA.mp3" was already specified.
Réponse
ffplay
semble ne prendre en charge quun seul fichier dentrée, vous devrez donc utiliser du code pour parcourir une liste de fichiers dentrée (et éventuellement pour les mélanger ); en supposant follement coreutils
(pour shuf
), peut-être quelque chose comme:
find musicdir -type f -name "*.mp3" | shuf | while read f; do ffplay -autoexit -- "$f"; done
Cela va bien sûr se casser terriblement sil y a des espaces ou des retours à la ligne dans les noms de fichiers.
(Mon lecteur de musique actuel est assez similaire, find ~/music -type f -name "*.mp3" | mpg123 --shuffle -Z --list -
)
Commentaires
Réponse
Jai trouvé ce fil pendant que jécrivais une interface graphique FFplay dans Lazarus / FPC. Il pouvait déjà lire une liste de fichiers supprimés et passer au fichier suivant / précédent, mais je devais tuer le processus ffmpeg et en créer un nouveau à chaque fois. Jessayais dajouter la possibilité de lire toute une liste de fichiers. La solution de contournement la plus simple que jai trouvée pour le moment était bien sûr dutiliser -autoexit, et de créer un fichier de liste de lecture avec ce code 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;
Ensuite, le lire de cette façon:
"ffplay -f concat -safe 0 -i flist.txt -autoexit"
qui est la même syntaxe que jutilise pour concaténer des fichiers avec FFMPeg.
Je cherche maintenant un moyen approprié dajouter un délai si les fichiers sont des fichiers image…
-autoexit
semble pertinent pour ce problème.-autoexit
a résolu ce problème. Maintenant, jen ai un autre qui peut être résolu en utilisant-nodisp
… cela désactivera la visualisation de la forme donde et des choses similaires. Cela évitera de créer une nouvelle fenêtre et de voler le focus de lapplication actuelle (cétait un comportement très ennuyeux). souhaitez-vous inclure cette option dans votre réponse, comme une option possible pour résoudre le comportement ennuyeux.