Wie nehme ich den Dateinamen von yt-dlp und verwende ihn als ffmpeg-Ausgabedateinamen?

Wie nehme ich den Dateinamen von yt-dlp und verwende ihn als ffmpeg-Ausgabedateinamen?

Ich versuche, den Ausgabenamen mit dem Eingabenamen identisch zu machen, während ich den Pipe-Befehl in ffmpeg verwende.

Beispiel:

Die Datei heißt 1-Minute Audio Test for Stereo Speakers & Headphones [2ZrWHtvSog4].m4a. Ich versuche, dieName der Ausgabedateizu seinautomatischdas gleiche wieName der Eingabedateiaber mit der .mp3Erweiterung.

Der endgültige Name sollte also vorliegen, 1-Minute Audio Test for Stereo Speakers & Headphones [2ZrWHtvSog4].mp3ohne dass Sie ihn manuell eingeben müssen.

Beispiel:

yt-dlp -o - -f 139 --external-downloader aria2c --external-downloader-args '-d ./ -x 10' https://www.youtube.com/watch?v=2ZrWHtvSog4 | ffmpeg -i pipe: -codec:a libmp3lame -b:a 8000 -ac 1 -ar 8000 test_audio.mp3

Diese Befehle erstellen eine Datei mit dem Namen „ test_audio.mp3Ich versuche, sie zu erstellen“, 1-Minute Audio Test for Stereo Speakers & Headphones [2ZrWHtvSog4].mp3ohne sie eingeben zu müssen.

Ich bin nicht sicher, wie ich die Dateinamenvariable von der Eingabedatei in die Ausgabedatei von ffmpeg weiterleite/abrufe.

Meine Gedanken waren:

  1. Holen Sie sich den Dateinamen von yt-dlp und platzieren Sie ihn in einer Variablen.
  2. Verwenden Sie diese Variable als Ausgabedateinamen mit ffmpeg

Antwort1

Das hat bei mir funktioniert:

yt-dlp -o - -f 139 --external-downloader aria2c --external-downloader-args '-d ./ -x 10' https://www.youtube.com/watch?v=2ZrWHtvSog4 | ffmpeg -i pipe: -codec:a libmp3lame -b:a 8000 -ac 1 -ar 8000 -f mp3 "$(basename "$(yt-dlp -e https://www.youtube.com/watch?v=2ZrWHtvSog4 | sed 's/[\/:*?"<>|]/_/g')").mp3"

Erläuterung:

Der Befehl basename wird verwendet, um den Basisnamen aus der URL zu extrahieren. Er ruft den Videotitel mit yt-dlp -e ab.https://www.youtube.com/watch?v=2ZrWHtvSog4und ersetzt dann alle in Dateinamen nicht zulässigen Zeichen mit Unterstrichen mithilfe von sed 's/[/:*?"<>|]/_/g'.

Die $(...)-Syntax wird verwendet, um einen Befehl auszuführen und seine Ausgabe als Teil des größeren Befehls zu verwenden.

$(Basisname "$(yt-dlp -ehttps://www.youtube.com/watch?v=2ZrWHtvSog4| sed 's/[/:*?"<>|]/_/g')").mp3 ist der resultierende Dateiname mit der hinzugefügten Erweiterung .mp3.

verwandte Informationen