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

  • Ho provato la tua soluzione e ' è quasi buona, ma … ci sono alcuni problemi correlati a ffplay che ' non sono sicuro se dovrebbero essere risolti in questa domanda o in unaltra. uno dei problemi è che ffplay non terminerà la riproduzione del brano corrente e per questo motivo non passerà al brano successivo alla fine di quello corrente fino a quando non userò la combinazione di tasti CTRL + c.
  • @Scantlight il -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.

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 …

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *