Der er mange lyd- og videoafspillere, men jeg vil gerne bruge et værktøj, som mange foreslår. Så jeg vil gerne bruge ffplay som lyd- og videoafspiller.

For at afspille en fil er kommandoen sådan.

 ffplay path_to_audio_file.mp3  

men hvordan man spiller en liste over lydfiler eller en liste over videoer?

Jeg forsøgte at bruge:

ffplay *.mp3 

men uden succes giver det mig en fejl som denne:

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

Svar

ffplay ser ud til kun at understøtte en enkelt inputfil, så du bliver nødt til at bruge kode til at løbe en liste over inputfiler (og muligvis at blande dem ); antager vildt coreutils (for shuf), måske noget som:

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

Dette bryder naturligvis forfærdeligt, hvis der er mellemrum eller nye linjer i filnavne.

(Min nuværende musikafspiller er ret ens, find ~/music -type f -name "*.mp3" | mpg123 --shuffle -Z --list -)

Kommentarer

  • Jeg prøvede din løsning, og den ' er næsten god, men … der er nogle problemer relateret at ffplay, som jeg ' ikke er sikker på, om de skal løses i dette spørgsmål eller i et andet. et af problemerne er, at ffplay ikke slutter at afspille den aktuelle sang og af denne grund ikke vil gå til den næste sang i slutningen af den nuværende, indtil jeg ikke bruger CTRL + c keyboardkombination.
  • @Scantlight -autoexit flag synes relevant for dette problem.
  • -autoexit løste problemet. Nu har jeg en anden, som kan løses ved hjælp af -nodisp … dette vil deaktivere visualisering af bølgeform og lignende ting. Dette undgår at oprette et nyt vindue og stjæle fokus fra den aktuelle arbejdsapplikation (dette var meget irriterende adfærd). vil du medtage denne mulighed i dit svar som en mulig mulighed for at løse den irriterende opførsel.

Svar

Jeg fandt denne tråd, mens jeg skrev en FFplay GUI i Lazarus / FPC. Det kunne allerede afspille en droppet filliste og springe til næste / forrige fil, men jeg var nødt til at dræbe ffmpeg-processen og oprette en ny hver gang. Jeg forsøgte at tilføje muligheden for at afspille en hel filliste. Den enkleste løsning, jeg fandt i øjeblikket, var selvfølgelig at bruge -autoexit og oprette en playlistefil med denne Pascal-kode:

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; 

Derefter læser du den på denne måde:

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

hvilket er den samme syntaks, som jeg bruger til sammenkædning af filer med FFMPeg.

Jeg søger nu efter en korrekt måde at tilføje på en forsinkelse, hvis filer er billedfiler …

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *