Det finns många ljud- och videospelare men jag skulle vilja använda ett verktyg för många föreslår. Så jag vill använda ffplay som ljud- och videospelare.

För att spela en fil är kommandot så här.

 ffplay path_to_audio_file.mp3  

men hur man spelar en lista över ljudfiler eller en lista med videor?

Jag försökte använda:

ffplay *.mp3 

men utan framgång ger det mig ett fel så här:

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

Svar

ffplay verkar bara stödja en enda inmatningsfil, så du måste använda koden för att slinga över en lista med inmatningsfiler (och eventuellt blanda dem ); antar vildt coreutils (för shuf), kanske något som:

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

Detta kommer naturligtvis att bryta hemskt om det finns mellanslag eller nya rader i filnamnen.

(Min nuvarande musikspelare är ganska lika, find ~/music -type f -name "*.mp3" | mpg123 --shuffle -Z --list -)

Kommentarer

  • Jag prövade din lösning och den ' är nästan bra, men … det finns några problem relaterade att ffplay som jag ' inte är säker på om de ska lösas i den här frågan eller i en annan. ett av problemen är att ffplay inte slutar spela nuvarande låt och av den anledningen inte kommer att gå till nästa låt i slutet av nuvarande tills jag inte kommer att använda CTRL + c tangentbordskombination.
  • @Scantlight -autoexit flaggan verkar relevant för den frågan.
  • -autoexit löste problemet. Nu har jag en annan som kan lösas med -nodisp … detta kommer att inaktivera visualisering av vågform och liknande saker. Detta kommer att undvika att skapa ett nytt fönster och stjäla fokus från nuvarande arbetsapplikation (detta var väldigt irriterande beteende). vill du inkludera detta alternativ i ditt svar som ett möjligt alternativ för att lösa det irriterande beteendet.

Svar

Jag hittade den här tråden medan jag skrev ett FFplay GUI i Lazarus / FPC. Det kunde redan spela en tappad fillista och hoppa till nästa / föregående fil, men jag var tvungen att döda ffmpeg-processen och skapa en ny varje gång. Jag försökte lägga till möjligheten att spela en hel fillista. Den enklaste lösningen jag hittade för tillfället var naturligtvis att använda -autoexit och skapa en spellistfil med den här Pascal-koden:

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; 

Läs sedan den så här:

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

vilket är samma syntax som jag använder för att sammanfoga filer med FFMPeg.

Jag letar nu efter ett rätt sätt att lägga till en fördröjning om filer är bildfiler …

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *