Es gibt viele Audio- und Videoplayer, aber ich möchte ein Tool für viele Vorschläge verwenden. Daher möchte ich ffplay als Audio- und Videoplayer verwenden.

Um eine einzelne Datei abzuspielen, lautet der Befehl wie folgt:

 ffplay path_to_audio_file.mp3  

, aber wie man eine Liste von spielt Audiodateien oder eine Liste von Videos?

Ich habe versucht zu verwenden:

ffplay *.mp3 

aber ohne Erfolg gibt es einen Fehler wie diesen:

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

Antwort

ffplay scheint nur eine einzelne Eingabedatei zu unterstützen, daher müssen Sie Code verwenden, um eine Liste von Eingabedateien zu durchlaufen (und möglicherweise zu mischen) ); wild angenommen coreutils (für shuf), vielleicht so etwas wie:

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

Dies wird natürlich schrecklich brechen, wenn die Dateinamen Leerzeichen oder Zeilenumbrüche enthalten.

(Mein aktueller Musikplayer ist ziemlich ähnlich, find ~/music -type f -name "*.mp3" | mpg123 --shuffle -Z --list -)

Kommentare

  • Ich habe versucht, Sie zu lösen, und es ' ist fast gut, aber … es gibt einige Probleme im Zusammenhang zu spielen, was ich ' bin nicht sicher, ob sie in dieser oder einer anderen Frage gelöst werden sollten. Eines der Probleme ist, dass ffplay das Abspielen des aktuellen Songs nicht beendet und aus diesem Grund nicht zum nächsten Song am Ende des aktuellen Songs wechselt, bis ich die Tastenkombination STRG + c nicht verwende.
  • @Scantlight the -autoexit -Flag scheint für dieses Problem relevant zu sein.
  • -autoexit hat dieses Problem behoben. Jetzt habe ich eine andere, die mit -nodisp gelöst werden kann … dies deaktiviert die Visualisierung von Wellenformen und ähnlichen Dingen. Dadurch wird vermieden, dass ein neues Fenster erstellt und der aktuelle Arbeitsanwendung der Fokus gestohlen wird (dies war ein sehr ärgerliches Verhalten). Möchten Sie diese Option in Ihre Antwort aufnehmen, um das störende Verhalten zu lösen.

Antwort

Ich habe diesen Thread gefunden, als ich eine FFplay-GUI in Lazarus / FPC geschrieben habe. Es konnte bereits eine abgelegte Dateiliste abspielen und zur nächsten / vorherigen Datei springen, aber ich musste den ffmpeg-Prozess beenden und jedes Mal eine neue erstellen. Ich habe versucht, die Möglichkeit hinzuzufügen, eine ganze Dateiliste abzuspielen. Die einfachste Problemumgehung, die ich im Moment gefunden habe, war natürlich die Verwendung von -autoexit und das Erstellen einer Wiedergabelistendatei mit diesem Pascal-Code:

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; 

Dann lesen Sie es folgendermaßen:

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

Dies ist die gleiche Syntax, die ich zum Verketten von Dateien mit FFMPeg verwende.

Ich suche jetzt nach einer geeigneten Möglichkeit zum Hinzufügen eine Verzögerung, wenn Dateien Bilddateien sind…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.