Lade mit youtube-dl alles von einem YouTube-Video herunter

15

Ich möchte alles (Untertitel, Karten, Tags, Anmerkungen, Miniaturansichten usw. (und natürlich das Video mit Audio) von einem YouTube-Video herunterladen (z. B. dieses ).

Ich benutze youtube-dlund mit der überwältigenden Menge an zu verwendenden Schaltern kann ich anscheinend nichts finden, das meinen Bedürfnissen entspricht. Ich möchte auch das Video / Audio in der höchstmöglichen Qualität ohne Qualitätsverlust herunterladen. Obwohl es sich nicht um YouTube handelt, wollte ich einige meiner gekauften Kurse herunterladen, damit ich sie mir auf einer langen Reise ansehen kann.

Ich habe es ffmpeginstalliert und habe gehört, dass Sie es für verlustfreie Downloads von YouTube benötigen, bin mir aber nicht sicher, wie ich es verknüpfen soll youtube-dl.

Ich benutze es zum ersten Mal youtube-dl, daher ist jede Hilfe willkommen.

Leetbacoon
quelle

Antworten:

14

Die relevanten Optionen, die Sie benötigen:

# Filesystem
--write-annotations
--write-description
--write-info-json

# Thumbnail images
--write-all-thumbnails

# Video format
--format bestvideo+bestaudio/best
--merge-output-format mkv

# Subtitle
--all-subs
--write-auto-sub
--write-sub

# Post-processing
--add-metadata
--embed-subs

Kopieren Sie das in Ihre Konfigurationsdatei (entweder /etc/youtube-dl.confoder ~/.config/youtube-dl/config).

Mit dieser Konfiguration habe ich dieses Video heruntergeladen und youtube-dldie folgenden Dateien geschrieben:

$ ls
The Problem with Time & Timezones - Computerphile.annotations.xml
The Problem with Time & Timezones - Computerphile.description
The Problem with Time & Timezones - Computerphile.info.json
The Problem with Time & Timezones - Computerphile.jpg
The Problem with Time & Timezones - Computerphile.mkv

Ich kann die mediainfoAusgabe hier nicht posten , da sie die Zeichenbeschränkung überschreitet, aber Sie können sie in Github sehen .


Ich möchte auch das Video / Audio in der höchstmöglichen Qualität ohne Qualitätsverlust herunterladen.

youtube-dlLädt Videos standardmäßig mit der höchstmöglichen Qualität herunter. Sie können dieses Verhalten jedoch mit erzwingen --format bestvideo+bestaudio/best.


Obwohl es sich nicht um YouTube handelt, wollte ich einige meiner gekauften Kurse herunterladen, damit ich sie mir auf einer langen Reise ansehen kann.

Bitte lesen Sie den Artikel Kann ich einen Kurs auf meinen Computer herunterladen? :

Standardmäßig können vollständige Kurse nicht von einem Computer heruntergeladen werden. Wir tun dies aus Gründen der Piraterie.

Bitte beachten Sie, dass Sie Kurse jederzeit für die Offline-Anzeige in der Udemy Mobile-App speichern können . Informationen zum Herunterladen von Videovorträgen auf Ihr iOS-Mobilgerät finden Sie hier . Schritte zum Herunterladen von Videos für die Offline-Anzeige auf einem Android-Gerät finden Sie hier .


Ich habe es ffmpeginstalliert und habe gehört, dass Sie es für verlustfreie Downloads von YouTube benötigen, bin mir aber nicht sicher, wie ich es verknüpfen soll youtube-dl.

youtube-dlverwendet avconvstandardmäßig, aber --prefer-ffmpeglassen Sie verwenden ffmpegstattdessen. Auf jeden Fall wird diese Option für " verlustfreie Downloads " nicht benötigt . In dem von mir bereitgestellten Beispiel werden youtube-dlnur ffmpegalle heruntergeladenen Formate zu einer einzigen mkv-Datei zusammengeführt.

nxnev
quelle
Wird dies die Informationen von YouTube in das Video einbetten? Ich möchte das nicht unbedingt, ich möchte nur, dass es heruntergeladen wird, aber behalte das alles in separaten Dateien, so wie es aussieht :)
leetbacoon
Und ist .mkv der Standardcontainer für verlustfreie Videos youtube-dl?
Leetbacoon
Oh, und wie hast du das Video heruntergeladen? youtube-dl [youtube-link]?
Leetbacoon
1
@ Leetbacoon Ich verstehe. Ich werde einen Fehlerbericht hinzufügen.
nxnev
1
@leetbacoon Als ich diese Antwort schrieb, war es das Gegenteil, ich youtube-dlhätte bestimmte Videos --youtube-skip-dash-manifestnicht herunterladen können, wenn die Option nicht vorhanden gewesen wäre. Habe gerade diese Option herausgenommen, danke, dass du es mir erzählt hast.
nxnev
6

Um das Video einfach herunterzuladen, können Sie dies verwenden:

youtube-dl --all-subs "https://www.youtube.com/watch?v=KYBok-XGsKM"

Um die Videoqualität auszuwählen, sollten Sie zuerst die Option -F verwenden, um die verfügbaren Formate aufzulisten.

youtube-dl -F "https://www.youtube.com/watch?v=KYBok-XGsKM"

Und das ist die Ausgabe für dein Video:

[youtube] KYBok-XGsKM: Downloading webpage
[youtube] KYBok-XGsKM: Downloading video info webpage
[youtube] KYBok-XGsKM: Extracting video information
WARNING: unable to extract uploader nickname
[info] Available formats for KYBok-XGsKM:
format code  extension  resolution note
249          webm       audio only DASH audio   52k , opus @ 50k,  4.19MiB
250          webm       audio only DASH audio   75k , opus @ 70k, 5.42MiB
140          m4a        audio only DASH audio  129k , m4a_dash container, mp4a.40.2@128k, 10.59MiB
171          webm       audio only DASH audio  131k , vorbis@128k, 7.66MiB
251          webm       audio only DASH audio  135k , opus @160k, 9.58MiB
278          webm       256x144    144p   98k , webm container, vp9, 30fps, video only, 6.59MiB
160          mp4        256x144    144p  114k , avc1.4d400c, 15fps, video only, 9.04MiB
242          webm       426x240    240p  205k , vp9, 30fps, video only, 11.47MiB
133          mp4        426x240    240p  265k , avc1.4d4015, 30fps, video only, 20.11MiB
243          webm       640x360    360p  362k , vp9, 30fps, video only, 21.93MiB
134          mp4        640x360    360p  602k , avc1.4d401e, 30fps, video only, 20.42MiB
244          webm       854x480    480p  662k , vp9, 30fps, video only, 37.82MiB
135          mp4        854x480    480p 1020k , avc1.4d401f, 30fps, video only, 42.62MiB
247          webm       1280x720   720p 1353k , vp9, 30fps, video only, 81.53MiB
136          mp4        1280x720   720p 2013k , avc1.4d401f, 30fps, video only, 84.69MiB
137          mp4        1920x1080  1080p 2438k , avc1.640028, 30fps, video only, 157.71MiB
248          webm       1920x1080  1080p 2593k , vp9, 30fps, video only, 162.48MiB
264          mp4        2560x1440  1440p 6973k , avc1.640032, 30fps, video only, 459.58MiB
271          webm       2560x1440  1440p 7523k , vp9, 30fps, video only, 485.66MiB
313          webm       3840x2160  2160p 19991k , vp9, 30fps, video only, 1.34GiB
36           3gp        320x?      small , mp4v.20.3,  mp4a.40.2
17           3gp        176x144    small , mp4v.20.3,  mp4a.40.2@ 24k
43           webm       640x360    medium , vp8.0,  vorbis@128k
18           mp4        640x360    medium , avc1.42001E,  mp4a.40.2@ 96k
22           mp4        1280x720   hd720 , avc1.64001F,  mp4a.40.2@192k (best)

Hier sind einige nützliche Optionen für Untertitel:

   --write-sub
          Write subtitle file

   --write-auto-sub
          Write automatically generated subtitle file (YouTube only)

   --all-subs
          Download all the available subtitles of the video

   --list-subs
          List all available subtitles for the video

Und für Thumbnails:

   --write-thumbnail
          Write thumbnail image to disk

   --write-all-thumbnails
          Write all thumbnail image formats to disk

   --list-thumbnails
          Simulate and list all available thumbnail formats

Weitere Informationen zur Videoqualität finden Sie hier

Mojtaba Zali
quelle
4
Was hoffen Sie mit der manuellen Formatauswahl zu erreichen? youtube-dlverwendet standardmäßig die besten verfügbaren Video- und Audioformate. Wenn Sie eine andere Einstellung in der Konfigurationsdatei überschreiben möchten, können Sie diese verwenden -f bestvideo+bestaudio/best(dies entspricht der Standardeinstellung) oder die Konfigurationsdatei ignorieren ( --ignore-config).
David Foerster
Zitiere mich nicht dazu, aber ich dachte, ich hätte früher gelesen, dass du, um verlustfreies Video mit Audio zu erhalten, einfachyoutube-dl https://www.youtube.com/watch?v=KYBok-XGsKM
leetbacoon
Und ich frage mich nur, warum wird eine 1080p-Kopie als die beste angesehen, wenn 1440p verfügbar ist? Und warum wird 2160p angezeigt? Diese Option wird bei mir nicht
angezeigt
3

@ Leetbacoon siehe Kommentar Antwort ganz unten. (niedrige Wiederholung noch sry)

Hinweis: Ich werde die längeren Schalternamen verwenden, um Verwirrung zu vermeiden. Viele der verwendeten Schalter haben kürzere Versionen. Siehe Docs: Optionen .

Hinweis: - \Zur Vereinfachung der Anzeige werden die Schalter separat angezeigt. alles \kann weggelassen werden; Wenn Sie verwenden, \stellen Sie sicher, dass kein Leerzeichen danach steht \.


Synopsis: Ein ytdl-Befehl zum Herunterladen einer einzelnen Videodatei mit der höchsten verfügbaren Video- und Audioqualität. Speichert das Video in einem eigenen Verzeichnis (von Ihnen festgelegt). Lädt alle verfügbaren Metadaten herunter, schreibt sie in die entsprechenden Dateiformate und speichert sie im selben Verzeichnis. Fügt der Videoausgabedatei Video-Metadaten hinzu.

Ersetzen Sie mit Ihrem eigenen:

  • Ersetzen Sie /archive/videos/TED_Archive/in den Schaltern --download-archiveund --outputmit einem Verzeichnispfad Ihrer Wahl.
  • Beispiel Speicherpfad / Archiv / Videos
  • Beispielvideolink: https://www.youtube.com/watch?v=0bFs6ZiynSU
  • Beispiel-Channel-Verzeichnis / TED_Archive

====

youtube-dl \
--limit-rate '0.25M' \
--retries '3' \
--no-overwrites \
--call-home \
--write-info-json \
--write-description \
--write-thumbnail \
--all-subs \
--convert-subs 'srt' \
--write-annotations \
--add-metadata \
--embed-subs \
--download-archive '/archive/videos/TED_Archive/TED_Archive.ytdlarchive' \
--format 'bestvideo+bestaudio/best' \
--merge-output-format 'mkv' \
--output '/archive/videos/TED_Archive/%(upload_date)s_%(id)s/TED_Archive_%(upload_date)s_%(id)s_%(title)s.%(ext)s' \
'https://www.youtube.com/watch?v=0bFs6ZiynSU' ;

Hinweis: Schließen Sie alle Argumente mit ein, ' 'um die Sicherheit beim Parsen zu gewährleisten.

Erklärung der empfohlenen Schalter:

  • --limit-rate '0.25M'wird verwendet, um die verfügbare maximale Download-Geschwindigkeit jeder youtube-dl-Instanz in B / s (Bytes pro Sekunde) zu begrenzen.
    Argumente: jede positive ganze Zahl mit einem Suffix für eine großgeschriebene Einheit.
    Einheitensuffixe: K für Kilobyte; M für Megabyte; Unklar, ob Gigabyte unterstützt wird.
    Ergänzung:
    1. Blockierung der Internetverbindung vermeiden.
    2. hilfreich bei der Verwaltung der Download-Geschwindigkeiten mehrerer ytdl-Instanzen gleichzeitig.
    Ommission:
    1. verstopft das Internet; Youtube-Videos können nicht durchsucht werden.
    2. lädt das Video so schnell wie möglich herunter.
    Hinweis: Sie können mehrere youtube-dl-Instanzen gleichzeitig ausführen.

  • --retries '5'wird verwendet, um den Download eines Videos automatisch zu wiederholen, wenn dies fehlschlägt. Nützlich beim Herunterladen einer Wiedergabeliste oder eines ganzen Kanals (was in Youtube-Begriffen auch eine Wiedergabeliste (dieses bestimmten Kanals) ist).
    Werte: Wählen Sie eine beliebige positive Ganzzahl. Standard ist 10. Max ist infinite(als wörtliche Zeichenfolge eingeben).

  • --continue
    Argumente: keine
    Hinzufügung:
    1. Erzwingt das erneute Herunterfahren von Teildateien.
    Hinweis: ytdl lädt Videos in Stücken herunter. Chunks bleiben erhalten, wenn ytdl während des Downloads unerwartet beendet wird.
    Hinweis:
    1. Standardmäßig setzt ytdl den Download fort, wenn möglich.

  • --no-overwrites
    Argumente: keine
    Ergänzung: Vorhandene Metadatendateien mit demselben Namen werden nicht überschrieben.
    Ommission: Überschreibt vorhandene Metadatendateien mit demselben Namen, jedoch nicht die Videodatei.

    • --call-home Wird verwendet, um den ytdl-Server zum Debuggen zu kontaktieren.

      "Wenn Ihr Server mehrere IP-Adressen hat oder Sie eine Zensur vermuten, ist das Hinzufügen von --call-home möglicherweise eine gute Idee, um mehr Diagnosen zu erhalten." - Docs: Bugs , abgerufen 20180408,

  • --write-info-json
    Argumente: keine
    Ausgabeformat: json;
    Informationsinhalt: Anzahl der Aufrufe, Likes, Upload-Datum, Informationen zur Video- und Audioqualität usw. (jedoch keine Videotextbeschreibung (vom Uploader unterhalb des Videos gepostet (Youtube-Layout 2018))
    Ergänzung: Schreibt Videometadaten in eine separate .info.jsonDatei. Im selben Ordner wie die Videodatei gespeichert.
    Ommission: Beeinflusst nicht, --add-metadatawelche Video-Metadaten weiterhin in die Video-Ausgabedatei geschrieben werden.

  • --write-description
    Argumente: keine
    Ausgabeformat: Nur-Text;
    Hinzufügung: Schreibt den vom Video-Uploader im Beschreibungsabschnitt eines Videos (unterhalb des Videos (Youtube-Layout 2018)) veröffentlichten Text in eine separate Write .descriptionDatei. Im selben Ordner wie die Videodatei gespeichert.

  • --write-thumbnailSchreibt das Miniaturbild mit der höchsten verfügbaren Auflösung ( maxresdefault.jpgvon YouTube aufgerufen ) in eine .jpgDatei. Umbenannt nach Vorlage angegeben mit --output. Im selben Verzeichnis wie die Videodatei gespeichert.
    Argumente: keine
    Ausgabeformat: nur JPEG;
    Hinweis: Verwenden Sie diese Option youtube-dl --list-thumbnails '<video_url>', um die verfügbaren Miniaturansichten eines bestimmten Videos zu untersuchen (funktioniert nicht bei Wiedergabelisten-Links). Ex.:youtube-dl --list-thumbnails 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --write-annotationsSchreibt Videokommentare in eine .annotations.xmlDatei. Umbenannt nach Vorlage angegeben mit --output. Im selben Verzeichnis wie die Videodatei gespeichert.
    Argumente: keine
    Ausgabeformat: .xml;

  • --all-subsschreibt all benutzerdefinierten für ein Video an ihre jeweiligen Dateien Untertitel erstellt (ex .: subtitles.en.vtt, subtitles.fr.vtt, subtitles.es.vtt)
    Argumente: kein
    Ausgabeformat: Standard .vtt; kann andere Formate mit --sub-format
    Fehlermeldungen angeben : Wenn keine Untertitel verfügbar sind, wird eine WARNUNG-Meldung im Standardformat gedruckt:WARNING: video doesn't have subtitles

Nützlicher Befehl:

Hinweis: Verwenden Sie diese Option youtube-dl --list-subs '<video_url>', um die verfügbaren Miniaturansichten eines bestimmten Videos zu untersuchen (funktioniert nicht bei Wiedergabelisten-Links).
Ex.:youtube-dl --list-subs 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --convert-subs 'srt'
    Argumente: String: Formaterweiterung ass, srt oder bestes
    Ausgabeformat: Standard .vtt; oder gemäß Spezifikation
    Zusatz: Schreibt Untertitel in das angegebene Dateiformat (Bsp .:) .srt. Im selben Ordner wie die Videodatei gespeichert.
    Hinweis: Untertitel werden als .vtt
    Fehlermeldungen geschrieben : Wenn keine Untertitel verfügbar sind, wird eine INFO-Nachricht im Standardformat gedruckt. [ffmpeg] There aren't any subtitles to convert
    Hinweis: Die Konvertierung wird als Nachbearbeitungsschritt für die .vttDatei nach dem Download ausgeführt. Wenn die ytdl-Ausführung unerwartet beendet wird, werden einige Untertiteldateien möglicherweise nicht konvertiert (in diesem Fall führen Sie den Befehl erneut aus).

  • --add-metadata
    Argumente: keine
    Verhalten: Schreibt Metadaten in die Videoausgabedatei.
    Hinweis: Benötigt kein .info.jsongeneriert von--write-info-json

  • --embed-subs
    Argumente: keine
    Verhalten:
    1. Schreibt Untertitel in die Videoausgabedatei.
    2. nur für mp4, webm und MKV - Videos
    Fehlermeldungen: Wenn es keine Untertitel verfügbar ein INFO - Nachricht auf stdout gedruckt wird - Format: [ffmpeg] There aren't any subtitles to embed
    Hinweis: erfordert nicht ein , .vtterzeugt durch --write-sub, --write-auto-suboder--all-sub

  • --download-archive '<archive_path>/<channel_name>/<channel_name>.ytdlarchive'
    Verhalten: Wird zum Erstellen einer Textdatei verwendet, die Links zu zuvor heruntergeladenen Videos enthält. Ermöglicht das Überspringen dieser Videos beim Herunterladen eines gesamten Kanals. Nicht erforderlich, wenn Sie nur einzelne Videos herunterladen.
    Argumente: String: Zusammengesetzt aus dem Pfad zu Ihrem Videoarchiv und dem nach dem Kanal benannten Verzeichnis. Dateiname besteht aus Kanalnamen mit .ytdlarchiveDateierweiterung. (Könnte auch .txt sein; das eindeutige Format ermöglicht jedoch eine einfache Unterscheidung.)
    Ausgabeformat: Nur-Text; eine videoID pro Zeile
    Zusatz:
    1. ytdl liest diese Datei, ignoriert und überspringt alle Videos, die mit ihrer videoID aufgeführt sind, auch wenn sie noch nicht heruntergeladen wurden.
    2. Fügt der Datei automatisch die Video-ID des zuletzt heruntergeladenen Videos
    hinzu. Wenn Videodateien und Metadatendateien vorhanden sind, lädt ytdl sie erneut herunter.

  • --format ''
    Argumente: Empfohlene Zeichenfolge: bestvideo+bestaudio/bestum die höchste Kombination von Video- und Audioqualität sicherzustellen.
    Ergänzung: die volle Kontrolle über die Videoqualität und Audio-Qualität und die Kombinationen, sowie Ausweich Qualitäten
    OMMISSION: Standard youtube-dl will guess it for you by default- Text & Tabellen
    Hinweis: Siehe Text & Tabellen: Format Auswahl Beispiele

  • --merge-output-format '<video_format>'
    Argumente: Videodateiformat. (Bsp .: mp4, mkv, 3gp, etc.)
    Zugabe: kann Video - Dateiformat angeben
    OMMISSION: Standard youtube-dl will guess it for you by default- Text & Tabellen
    Hinweis: Siehe Text & Tabellen: Format Auswahl

Nützlicher Befehl:

Hinweis: Verwenden Sie diese Option youtube-dl --list-formats '<video_url>', um die verfügbaren Video- und Audioqualitäten und -formate eines bestimmten Videos zu untersuchen (funktioniert nicht bei Wiedergabelisten-Links).
Ex.:youtube-dl --list-formats 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --output '<template>'
    Argumente:
    1. Videodateiformat. (Beispiel: mp4, mkv, 3 gp usw.);
    2. Empfohlen: %(upload_date)s_%(id)s_%(title)s.%(ext)s
    Hinzufügung: Beeinflusst die Dateinamenskonvention für Videodateien und alle Metadatendateien.
    Hinweis: Standardmäßig ist der Videotitel der Dateiname. Standardvorlage: %(id)s.%(ext)sGibt Folgendes aus: testvideo.mkv
    Hinweis: Vergessen Sie das %Präfix und das sSuffix nicht (es gibt auch andere Suffixe). Der Abstand _zwischen Vorlagenelementen ist nur ein Trennzeichen und kann ein beliebiges anderes Zeichen sein. Beispiel: %(upload_date)s-%(id)s
    Hinweis: Siehe Dokumente: Ausgabevorlage

  • '<video_url>'
    Argumente: Zeichenfolge: URL für bestimmtes Video
    Fehlermeldung:
    1. Wenn keine Video-URL gesendet wurde, wird ytdl nicht ausgeführt und zeigt die Hilfe an.
    2. Wenn eine ungültige Video-URL gesendet wurde, wird die Fehlermeldung im Standardformat gedruckt:ERROR: u'' is not a valid URL. Set --default-search "ytsearch" (or run youtube-dl "ytsearch:" ) to search YouTube


Lagerungsempfehlungen:

  1. erstelle ein verzeichnis miscin deinem videoarchiv und speichere dort alle einzelnen videos.

  2. Wenn Sie ein oder mehrere Videos von einem Kanal herunterladen, erstellen Sie ein dediziertes Verzeichnis für diesen Kanal. In diesem Fall lautet der Kanalname TED Archiveund der Verzeichnisname TED_Archive. (Ich ersetze präventiv alle Leerzeichen durch Unterstriche, um die Verzeichnisnavigation und Datei-E / A-Aktionen bei Verwendung von Bash- (oder Python-) Skripten zu vereinfachen.)


Antworten Sie auf Ihren Kommentar @leetbacoon

Und ich frage mich nur, warum wird eine 1080p-Kopie als die beste angesehen, wenn 1440p verfügbar ist? Und warum wird 2160p angezeigt? Diese Option wird bei mir nicht angezeigt (sie ist auf 1440p begrenzt) - Leetbacoon

Aus den Dokumenten
You can also use a file extension (currently 3gp, aac, flv, m4a, mp3, mp4, ogg, wav, webm are supported) to download the best quality format of a particular file extension served as a single file

best: Select the best quality format represented by a single file with video and audio.

bestvideo: Select the best quality video-only format

Ich denke, wenn Sie nur auswählen bestund ein Ausgabeformat angeben, sendet YouTube das Format, das es für die beste Video- und Audio- Kombination für dieses Format hält. Dies kann einigen internen Spekulationsentscheidungen von YouTube unterliegen.


In meiner Benutzererfahrung musste ich speziell festlegen bestvideo+bestaudio, ob die höchste verfügbare Video- und Audioqualität erzielt werden soll, und diese dann in einem MKV-Container kombinieren.


Ich benutze /bestals Fallback-Argument nur um sicherzugehen.


Von Cortana träumen
quelle