Istnieje wiele odtwarzaczy audio i wideo, ale chciałbym użyć jednego narzędzia do wielu propozycji. Dlatego chciałbym użyć ffplay
jako odtwarzacza audio i wideo.
Aby odtworzyć jeden plik, polecenie wygląda tak.
ffplay path_to_audio_file.mp3
ale jak odtworzyć listę pliki audio czy lista filmów?
Próbowałem użyć:
ffplay *.mp3
ale bez powodzenia, pojawia się następujący błąd:
Argument "audiofileB.mp3" provided as input filename, but "audiofileA.mp3" was already specified.
Odpowiedź
ffplay
wydaje się obsługiwać tylko jeden plik wejściowy, więc będziesz musiał użyć kodu, aby zapętlić listę plików wejściowych (i być może tasować je ); szalenie zakładając coreutils
(dla shuf
), być może coś takiego:
find musicdir -type f -name "*.mp3" | shuf | while read f; do ffplay -autoexit -- "$f"; done
To oczywiście strasznie się zepsuje, jeśli w nazwach plików będą spacje lub znaki nowej linii.
(Mój obecny odtwarzacz muzyki jest dość podobny, find ~/music -type f -name "*.mp3" | mpg123 --shuffle -Z --list -
)
Komentarze
Odpowiedź
Znalazłem ten wątek podczas pisania GUI FFplay w Lazarus / FPC. Mógł już odtwarzać upuszczoną listę plików i przeskoczyć do następnego / poprzedniego pliku, ale musiałem zabić proces ffmpeg i za każdym razem tworzyć nowy. Próbowałem dodać możliwość odtwarzania całej listy plików. Najprostszym obejściem, jakie znalazłem do tej pory, było oczywiście użycie -autoexit i utworzenie pliku listy odtwarzania z tym kodem 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;
Następnie przeczytałem go w ten sposób:
"ffplay -f concat -safe 0 -i flist.txt -autoexit"
To jest ta sama składnia, której używam do łączenia plików z FFMPeg.
Teraz szukam właściwego sposobu dodawania opóźnienie, jeśli pliki są plikami graficznymi…
-autoexit
wydaje się mieć związek z tym problemem.-autoexit
rozwiązało ten problem. Teraz mam inny, który można rozwiązać za pomocą-nodisp
… to wyłączy wizualizację przebiegu i tym podobnych rzeczy. Pozwoli to uniknąć tworzenia nowego okna i kradzieży fokusu z aktualnie działającej aplikacji (było to bardzo irytujące zachowanie). czy chcesz uwzględnić tę opcję w swojej odpowiedzi jako możliwą opcję rozwiązania irytującego zachowania.