Ich versuche, einen Clip aus einem YouTube-Video herunterzuladen und habe den Weg über Befehlszeilentools gewählt, nachdem ich herausgefunden habe, dass Websites für diese Aufgabe nicht geeignet sind.
Danke dafürAskUbuntu-Threadhabe ich den folgenden Befehl erhalten:
ffmpeg -i $(youtube-dl -f 22 --get-url https://www.youtube.com/watch?v=EkTHhk07nv4) -ss 00:05:12.70 -t 00:00:08.10 -c:v copy -c:a copy hamster.mp4
Wenn ich es jedoch mit ffmpeg
und youtube-dl
im selben Verzeichnis ausführe und cmd im selben Verzeichnis ausführe, erhalte ich diese Ausgabe:
ffmpeg version git-2020-02-06-343ccfc Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9.2.1 (GCC) 20200122
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
libavutil 56. 39.100 / 56. 39.100
libavcodec 58. 68.100 / 58. 68.100
libavformat 58. 38.100 / 58. 38.100
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 74.100 / 7. 74.100
libswscale 5. 6.100 / 5. 6.100
libswresample 3. 6.100 / 3. 6.100
libpostproc 55. 6.100 / 55. 6.100
Gefolgt von diesem Fehler:
Unrecognized option '-get-url'.
Error splitting the argument list: Option not found
Ich konnte die Fehlermeldung nicht verstehen und auch die Suche nach dem Fehler hat mir keine Antworten gegeben. Was könnte mit dem Befehl nicht stimmen?
Antwort1
Ich konnte die Fehlermeldung nicht verstehen und auch die Suche nach dem Fehler hat mir keine Antworten gegeben. Was könnte mit dem Befehl nicht stimmen?
ffmpeg
versucht, die --get-url
für vorgesehene Option zu analysieren youtube-dl
.
Erläuterung
Der youtube-dl
im ffmpeg
Befehl eingebettete Teil, z. B.:
$(youtube-dl -f 22 --get-url https://www.youtube.com/watch?v=EkTHhk07nv4)
ist gedacht, um:
Führen Sie den
youtube-dl
Befehl aus (der eine für den Zugriff auf das YouTube-Video erforderliche URL zurückgibt).Ersetzen Sie die Ergebnisse (also die zurückgegebene Video-URL) an der angegebenen Stelle im
ffmpeg
Befehl.
Ihr Problem scheint zu sein, dass die $()
Syntax nicht verwendet wird, um die richtige URL abzurufen/zu ersetzen. Dasselbe ffmpeg
gilt für das Lesen des Rohbefehls youtube-dl
und den Versuch, Optionen zu analysieren youtube-dl
, die nicht dafür vorgesehen waren.
Eine mögliche Lösung
Sie müssen sich darüber im Klaren sein, dass dies $()
nicht Teil von ist ffmpeg
. Das heißt, ffmpeg
es ist nicht das, was ausgeführt wird youtube-dl
oder die Ergebnisse ersetzt.
Bei Linux führt die von Linux verwendete Shell die Ausführung und Ersetzung durch, bevor die Dinge an weitergegeben werden ffmpeg
.
Mir ist nicht klar, welches Betriebssystem Sie verwenden, aber ich stelle fest, dass Sie in Ihrem ursprünglichen Beitrag auf „cmd“ verweisen. Wenn Sie Windows verwenden, cmd
unterstützt (die native Windows-Eingabeaufforderung) die Verwendung nicht $()
. Stattdessen sollten Sie Ihren Befehl mit versuchen powershell
:
powershell ffmpeg -i $(youtube-dl -f 22 --get-url https://www.youtube.com/watch?v=EkTHhk07nv4) -ss 00:05:12.70 -t 00:00:08.10 -c:v copy -c:a copy hamster.mp4
Pfadnotizen
Bitte beachten Sie, dass bei der Verwendung der powershell
obigen Option „wie sie ist“ davon ausgegangen wird, dass ffmpeg
und youtube-dl
systemweit verfügbar sind (d. h. die Ordner, in denen sich die jeweiligen ausführbaren Dateien befinden, sind Teil Ihrer Windows-Pfadeinstellungen).
Wenn Sie diese Ordner zu Ihrem Pfad hinzufügen möchten,Eine kurze Anleitung dazu finden Sie hier. Stellen Sie einfach sicher, dass Sie sie zu Ihren Systemvariablen hinzufügen. Außerdem sollten Sie als Randbemerkung den Windows Explorer neu starten, bevor Sie versuchen, entweder ffmpeg
oder zu verwenden youtube-dl
(dies geschieht häufig durch einen Neustart).
ffmpeg
Wenn Sie und nicht youtube-dl
systemweit verfügbar machen möchten, können Sie den powershell
obigen Befehl mit den entsprechenden Pfaden zu ffmpeg.exe
und ändern youtube-dl.exe
. Um beispielsweise alles im selben Ordner zu verwenden, können Sie .\
vor jedem ausführbaren Namen Folgendes hinzufügen:
powershell .\ffmpeg -i $(.\youtube-dl -f 22 --get-url https://www.youtube.com/watch?v=EkTHhk07nv4) -ss 00:05:12.70 -t 00:00:08.10 -c:v copy -c:a copy hamster.mp4