Existuje mnoho audio a video přehrávačů, ale chtěl bych použít jeden nástroj pro mnoho navrhnout. Rád bych tedy použil ffplay jako přehrávač zvuku a videa.

Chcete-li přehrát jeden soubor, je tento příkaz podobný.

 ffplay path_to_audio_file.mp3  

ale jak přehrát seznam zvukové soubory nebo seznam videí?

Zkoušel jsem použít:

ffplay *.mp3 

ale bez úspěchu mi to dává tuto chybu:

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

odpověď

ffplay podporuje pouze jeden vstupní soubor, takže budete muset pomocí kódu procházet seznam vstupních souborů (a případně je zamíchat) ); divoce za předpokladu coreutils (pro shuf), možná něco jako:

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

To se samozřejmě strašně zlomí, pokud jsou v názvech souborů mezery nebo nové řádky.

(Můj aktuální hudební přehrávač je docela podobný, find ~/music -type f -name "*.mp3" | mpg123 --shuffle -Z --list -)

Komentáře

  • Zkoušel jsem vaše řešení a je to ' téměř dobré, ale … existují určité problémy související na ffplay, které si ' nejsem jistý, zda by měly být vyřešeny v této otázce nebo v jiné. jedním z problémů je, že ffplay neskončí přehrávání aktuální skladby a z tohoto důvodu nepřejde na další skladbu na konci aktuální, dokud nebudu používat kombinaci kláves CTRL + c.
  • @Scantlight the -autoexit je pro daný problém relevantní.
  • -autoexit tento problém vyřešil. Nyní mám další, které lze vyřešit pomocí -nodisp … tím se deaktivuje vizualizace křivky a podobné věci. Tím se vyhnete vytvoření nového okna a ukradnutí fokusu z aktuální pracovní aplikace (toto bylo velmi nepříjemné chování). chtěli byste do své odpovědi zahrnout tuto možnost jako možnou možnost řešení otravného chování.

Odpovědět

Našel jsem toto vlákno, když jsem psal FFplay GUI v Lazarus / FPC. Mohlo to už přehrát vynechaný seznam souborů a přeskočit na další / předchozí soubor, ale musel jsem zabít proces ffmpeg a pokaždé vytvořit nový. Snažil jsem se přidat schopnost přehrát celý seznam souborů. Nejjednodušším řešením, které jsem doposud našel, bylo samozřejmě použití -autoexit a vytvoření souboru seznamu skladeb s tímto Pascalovým kódem:

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; 

Poté jej přečíst takto:

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

což je stejná syntaxe, jakou používám pro zřetězení souborů pomocí FFMPeg.

Nyní hledám správný způsob přidání zpoždění, pokud jsou soubory obrazové soubory…

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *