
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 .mp3
Erweiterung.
Der endgültige Name sollte also vorliegen, 1-Minute Audio Test for Stereo Speakers & Headphones [2ZrWHtvSog4].mp3
ohne 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.mp3
Ich versuche, sie zu erstellen“, 1-Minute Audio Test for Stereo Speakers & Headphones [2ZrWHtvSog4].mp3
ohne 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:
- Holen Sie sich den Dateinamen von yt-dlp und platzieren Sie ihn in einer Variablen.
- 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.