Ci sono molti lettori audio e video ma vorrei usare uno strumento per molti proposti. Quindi vorrei utilizzare ffplay
come lettore audio e video.
Per riprodurre un file il comando è come questo.
ffplay path_to_audio_file.mp3
ma come riprodurre un elenco di file audio o un elenco di video?
Ho provato a utilizzare:
ffplay *.mp3
ma senza successo, mi dà un errore come questo:
Argument "audiofileB.mp3" provided as input filename, but "audiofileA.mp3" was already specified.
Risposta
ffplay
sembra supportare solo un singolo file di input, quindi dovrai usare il codice per scorrere un elenco di file di input (e possibilmente per mescolarli ); supponendo selvaggiamente coreutils
(per shuf
), forse qualcosa come:
find musicdir -type f -name "*.mp3" | shuf | while read f; do ffplay -autoexit -- "$f"; done
Questo ovviamente si interromperà in modo orribile se ci sono spazi o nuove righe nei nomi dei file.
(Il mio attuale lettore musicale è abbastanza simile, find ~/music -type f -name "*.mp3" | mpg123 --shuffle -Z --list -
)
Commenti
Risposta
Ho trovato questo thread mentre scrivevo una GUI FFplay in Lazarus / FPC. Potrebbe già riprodurre un elenco di file rilasciato e passare al file successivo / precedente, ma ho dovuto terminare il processo ffmpeg e crearne uno nuovo ogni volta. Stavo cercando di aggiungere la possibilità di riprodurre un intero elenco di file. La soluzione più semplice che ho trovato al momento è stata ovviamente usare -autoexit e creare un file di playlist con questo codice 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;
Quindi leggerlo in questo modo:
"ffplay -f concat -safe 0 -i flist.txt -autoexit"
che è la stessa sintassi che uso per concatenare i file con FFMPeg.
Sto cercando un modo corretto per aggiungere un ritardo se i file sono file di immagine …
-autoexit
sembra pertinente al problema.-autoexit
ha risolto il problema. Ora ne ho un altro che può essere risolto usando-nodisp
… questo disabiliterà la visualizzazione della forma donda e cose simili. Ciò eviterà di creare una nuova finestra e rubare il focus dallapplicazione di lavoro corrente (questo era un comportamento molto fastidioso). vorresti includere questa opzione nella tua risposta, come possibile opzione per risolvere il fastidioso comportamento.