Je souhaite tout télécharger (sous-titres, cartes, tags, annotations, vignettes, etc. (et évidemment la vidéo avec audio)) à partir d'une vidéo YouTube (par exemple, celle-ci ).
J'utilise youtube-dl
et, avec l'énorme quantité de commutateurs à utiliser, je n'arrive pas à trouver quoi que ce soit pour répondre à mes besoins. Je souhaite également télécharger la vidéo/audio dans la meilleure qualité possible, sans perte de qualité. Même si ce n'est pas YouTube, je souhaitais également télécharger certains des cours udemy que j'ai achetés pour pouvoir les regarder pendant mon long voyage sur la route.
J'ai installé ffmpeg
et j'ai entendu dire que vous en aviez besoin pour les téléchargements sans perte de YouTube, mais je ne sais pas comment le lier avec youtube-dl
.
C'est la première fois que j'utilise youtube-dl
. Toute aide est donc la bienvenue.
Les options pertinentes dont vous avez besoin:
# Filesystem
--write-annotations
--write-description
--write-info-json
# Thumbnail images
--write-all-thumbnails
# Video format
--format bestvideo+bestaudio/best
--merge-output-format mkv
--youtube-skip-dash-manifest
# Subtitle
--all-subs
--write-auto-sub
--write-sub
# Post-processing
--add-metadata
--embed-subs
Copiez-le dans votre fichier de configuration (/etc/youtube-dl.conf
ou ~/.config/youtube-dl/config
).
En utilisant cette configuration, j'ai téléchargé cette vidéo et youtube-dl
a écrit les fichiers suivants:
$ 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
Je ne peux pas poster la sortie de mediainfo
car elle dépasse la limite de caractères, mais vous pouvez la voir dans github .
Je souhaite également télécharger la vidéo/l'audio dans la meilleure qualité possible, sans perte de qualité.
youtube-dl
télécharge les vidéos avec la meilleure qualité possible par défaut, mais vous pouvez forcer ce comportement à l'aide de --format bestvideo+bestaudio/best
.
Même si ce n'est pas YouTube, je souhaitais également télécharger certains de mes cours d'udemy que j'ai achetés pour pouvoir les regarder pendant mon long voyage sur la route.
Veuillez lire l'article Puis-je télécharger un cours sur mon ordinateur? :
Par défaut, les cours complets ne sont pas téléchargeables à partir d'un ordinateur. Nous faisons cela par souci de piratage.
Veuillez noter que vous pouvez toujours enregistrer les cours pour les consulter hors ligne sur le application mobile Udemy . Pour plus d'informations sur le téléchargement de conférences vidéo sur votre appareil mobile iOS, veuillez cliquer sur ici . Pour savoir comment télécharger des vidéos pour les visionner hors ligne sur un périphérique Android, cliquez sur ici . .
J'ai installé
ffmpeg
et j'ai entendu dire que vous en aviez besoin pour les téléchargements sans perte de YouTube, mais je ne savais pas comment le lier avecyoutube-dl
.
youtube-dl
utilise avconv
par défaut, mais --prefer-ffmpeg
vous a laissé utiliser ffmpeg
à la place. Quoi qu'il en soit, cette option n'est pas nécessaire pour " téléchargements sans perte ". Dans l'exemple que j'ai fourni, youtube-dl
n'utilisait que ffmpeg
pour fusionner tous les formats téléchargés dans un seul fichier mkv.
Pour télécharger simplement la vidéo, vous pouvez utiliser ceci:
youtube-dl --all-subs "https://www.youtube.com/watch?v=KYBok-XGsKM"
Pour sélectionner la qualité vidéo, vous devez d’abord utiliser l’option -F pour répertorier les formats disponibles.
youtube-dl -F "https://www.youtube.com/watch?v=KYBok-XGsKM"
Et voici le résultat de votre vidéo:
[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)
Voici quelques options utiles pour les sous-titres:
--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
Et pour les vignettes:
--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
Vous pouvez également trouver plus d'informations sur la qualité de la vidéo ici
Remarque: Je vais utiliser les noms de commutateur les plus longs pour éviter toute confusion. Beaucoup de commutateurs utilisés ont des versions plus courtes. Voir Docs: Options .
Remarque: - pour plus de commodité visuelle, \
est utilisé pour afficher les commutateurs séparément; tout \
peut être omis; Si vous utilisez \
, assurez-vous qu'il n'y a pas d'espace après \
.
Synopsis: Commande ytdl permettant de télécharger un seul fichier vidéo présentant la meilleure qualité vidéo et audio disponible. Enregistre la vidéo dans son propre répertoire (spécifié par vous). Télécharge toutes les métadonnées disponibles, écrit chacune dans les formats de fichiers respectifs et enregistre dans le même répertoire. Ajoute des métadonnées vidéo au fichier de sortie vidéo.
Remplacez-le par votre propre:
/archive/videos/TED_Archive/
dans les commutateurs --download-archive
et --output
par un chemin de répertoire de votre choix.====
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' ;
Remarque: Placez tous les arguments avec ' '
pour l'analyse de la sécurité.
Explication des commutateurs recommandés:
--limit-rate '0.25M'
est utilisé pour limiter la vitesse de téléchargement maximale disponible de chaque instance de youtube-dl en B/s (octets par seconde).
Arguments: tout entier positif avec un suffixe d'unité en majuscule.
Suffixes unitaires: K pour kilo-octets; M pour Megabyte; Ne sait pas si Gigabyte est pris en charge.
Ajout:
1. éviter le blocage de la connexion Internet.
2. très utile pour gérer les vitesses de téléchargement de plusieurs instances ytdl simultanées.
Ommission:
1. obstrue Internet; incapable de naviguer, retarder la lecture de la vidéo youtube.
2. téléchargera la vidéo aussi vite que possible.
Remarque: Vous pouvez exécuter plusieurs instances youtube-dl simultanément.
--retries '5'
est utilisé pour réessayer automatiquement le téléchargement d'une vidéo en cas d'échec. Utile pour télécharger une liste de lecture ou un canal entier (qui est, en termes Youtube, également une liste de lecture (de ce canal spécifique)).
Valeurs: Choisissez un nombre entier positif. La valeur par défaut est 10
. Max est infinite
(à entrer sous forme de chaîne littérale).
--continue
Arguments: aucun
Ajout:
1. forcera la reprise du téléchargement de fichiers partiels
Remarque: ytdl télécharge des vidéos en morceaux; les morceaux sont conservés si ytdl se termine inopinément pendant le téléchargement.
Ommission:
1. Par défaut, ytdl reprendra les téléchargements, si possible.
--no-overwrites
Arguments: aucun
Ajout: écrasera pas les fichiers de métadonnées existants avec mêmes noms.
Ommission: écrasera les fichiers de métadonnées existants portant le même nom, mais pas le fichier vidéo.
--call-home
utilisé pour contacter le serveur ytdl pour le débogage. "Si votre serveur a plusieurs adresses IP ou si vous suspectez de la censure, l'ajout de --call-home peut être une bonne idée pour obtenir davantage de diagnostics." - Docs: Bugs , récupéré en 20180408,
--write-info-json
Arguments: aucun
Format de sortie: json;
Contenu de l'information: afficher le nombre de coups de coeur, aime, la date de téléchargement, l'information sur la qualité audio et vidéo, etc. (mais pas la description textuelle de la vidéo (posté) ci-dessous la vidéo par uploader (2018 youtube layout)))
Ajout: écrit les métadonnées de la vidéo dans un fichier .info.json
séparé. Enregistré dans le même dossier que le fichier vidéo.
Ommission: n'affecte pas --add-metadata
qui écrira toujours les métadonnées vidéo dans le fichier de sortie vidéo.
--write-description
Arguments: aucun
Format de sortie: texte brut;
Ajout: écrit le texte posté par un utilisateur de la vidéo dans la section description d'une vidéo (sous la vidéo (2018 mise en page youtube)) dans un fichier Write .description
séparé. Enregistré dans le même dossier que le fichier vidéo.
--write-thumbnail
écrit la miniature de la résolution la plus haute disponible (appelée maxresdefault.jpg
par youtube) dans le fichier .jpg
. Renommé selon le modèle spécifié avec --output
. Enregistré dans le même répertoire que le fichier vidéo.
Arguments: aucun
Format de sortie: uniquement JPEG;
Remarque: Utilisez youtube-dl --list-thumbnails '<video_url>'
pour rechercher les miniatures disponibles d'une vidéo spécifique (ne fonctionne pas sur les liens de liste de lecture); Ex .: youtube-dl --list-thumbnails 'https://www.youtube.com/watch?v=odwfHu6MDuU'
--write-annotations
écrit les annotations vidéo dans le fichier .annotations.xml
. Renommé selon le modèle spécifié avec --output
. Enregistré dans le même répertoire que le fichier vidéo.
Arguments: aucun
Format de sortie: .xml;
--all-subs
écrit tous les sous-titres disponibles créés sur mesure pour une vidéo dans leurs fichiers respectifs (par exemple: subtitles.en.vtt
, subtitles.fr.vtt
, subtitles.es.vtt
)
Arguments: aucun
Format de sortie: Par défaut .vtt
; peut spécifier d'autres formats avec --sub-format
Messages d'erreur: S'il n'y a pas de sous-titres disponibles, un message AVERTISSEMENT sera imprimé sur la sortie standard - format: WARNING: video doesn't have subtitles
Remarque: Utilisez youtube-dl --list-subs '<video_url>'
pour rechercher les miniatures disponibles d'une vidéo spécifique (ne fonctionne pas sur les liens de playlist);
Ex .: youtube-dl --list-subs 'https://www.youtube.com/watch?v=odwfHu6MDuU'
--convert-subs 'srt'
Arguments: Chaîne: extension de format ass, srt ou meilleure
Format de sortie: Par défaut .vtt; ou selon spécification
Ajout: écrit les sous-titres dans le format de fichier spécifié (ex: .srt
). Enregistré dans le même dossier que le fichier vidéo.
Ommission: les sous-titres seront écrits sous la forme .vtt
Messages d'erreur: S'il n'y a pas de sous-titres disponibles, un message INFO sera imprimé sur la sortie standard - format: [ffmpeg] There aren't any subtitles to convert
Remarque: La conversion sera exécutée comme une étape de post-traitement sur le fichier .vtt
après le téléchargement. Si l'exécution de ytdl est interrompue de manière inattendue, certains fichiers de sous-titres risquent de ne pas être convertis (dans ce cas, exécutez à nouveau la commande).
--add-metadata
Arguments: aucun
Comportement: écrit les métadonnées dans un fichier de sortie vidéo.
Remarque: ne nécessite pas de .info.json
généré par --write-info-json
--embed-subs
Arguments: aucun
Comportement:
1. écrit les sous-titres dans le fichier de sortie vidéo;
2. uniquement pour les vidéos mp4, webm et mkv
Messages d'erreur: S'il n'y a pas de sous-titres disponibles, un message INFO sera imprimé sur stdout - format: [ffmpeg] There aren't any subtitles to embed
Remarque: ne nécessite pas un .vtt
généré par --write-sub
, --write-auto-sub
ou --all-sub
--download-archive '<archive_path>/<channel_name>/<channel_name>.ytdlarchive'
Comportement: est utilisé pour créer un fichier texte contenant des liens de vidéos précédemment téléchargées. Permet de sauter ces vidéos lors du téléchargement d'un canal entier. Non nécessaire lors du téléchargement de vidéos uniques uniquement.
Arguments: Chaîne: composé du chemin d'accès à votre archive vidéo, répertoire nommé d'après le canal. Le nom de fichier est composé du nom du canal avec l'extension de fichier .ytdlarchive
. (pourrait aussi être .txt; mais le format unique permet une différenciation facile)
Format de sortie: texte brut; un ID vidéo par ligne
Ajout:
1. ytdl lit ce fichier, ignore et ignore toutes les vidéos répertoriées avec leur ID vidéo, même si elles ne sont pas encore téléchargées.
2. ajoute automatiquement le videoID de la dernière vidéo téléchargée à ce fichier
Ommission: s'il existe un fichier vidéo et des fichiers de métadonnées, ytdl les téléchargera à nouveau.
--format ''
Arguments: Chaîne recommandée: bestvideo+bestaudio/best
pour assurer la meilleure combinaison de qualité vidéo et audio.
Ajout: contrôle total de la qualité vidéo et de la qualité audio et de leurs combinaisons, ainsi que des qualités de repli
Ommission: Par défaut youtube-dl will guess it for you by default
- Docs
Remarque: Voir Docs: exemples de sélection de format
--merge-output-format '<video_format>'
Arguments: format de fichier vidéo . (ex: mp4, mkv, 3gp, etc.)
Ajout: peut spécifier le format de fichier vidéo
Ommission: Par défaut youtube-dl will guess it for you by default
- Docs
Remarque: Voir Documents: sélection du format
Remarque: Utilisez youtube-dl --list-formats '<video_url>'
pour rechercher les qualités vidéo et audio disponibles et les formats d'une vidéo spécifique (ne fonctionne pas sur les liens de liste de lecture);
Ex .: youtube-dl --list-formats 'https://www.youtube.com/watch?v=odwfHu6MDuU'
--output '<template>'
Arguments:
1. format de fichier vidéo. (ex: mp4, mkv, 3gp, etc.);
2. Recommandé: %(upload_date)s_%(id)s_%(title)s.%(ext)s
Ajout: influence la convention de nommage des fichiers pour les fichiers vidéo et tous les fichiers de métadonnées.
Ommission: Par défaut, le titre de la vidéo sera le nom du fichier. Modèle par défaut: %(id)s.%(ext)s
générera un ex .: testvideo.mkv
Remarque: N'oubliez pas le préfixe %
et le suffixe s
(d'autres suffixes existent aussi.); Le _
entre les éléments de modèle est juste un séparateur et peut être n’importe quel autre caractère. ex .: %(upload_date)s-%(id)s
Remarque: Voir Docs: modèle de sortie
'<video_url>'
Arguments: Chaîne: URL d'une vidéo spécifique
Message d'erreur:
1. Si aucune URL de vidéo n'est envoyée, ytdl ne sera pas exécuté et affichera.
2. Si l'URL de la vidéo soumise invalide est envoyé, le message ERROR sera imprimé sur stdout - format: ERROR: u'' is not a valid URL. Set --default-search "ytsearch" (or run youtube-dl "ytsearch:" ) to search YouTube
Recommandations de stockage:
créez un répertoire misc
dans vos archives vidéo et stockez toutes les vidéos individuelles.
lorsque vous téléchargez une ou plusieurs vidéos d'un canal, créez un répertoire dédié à ce canal. Dans ce cas, le nom du canal est TED Archive
et le nom du répertoire sera TED_Archive
. (je substitue de manière préventive tous les caractères d'espacement par des traits de soulignement pour faciliter la navigation dans les répertoires et les actions d'E/S sur les fichiers lorsque j'utilise des scripts bash (ou python)).
En réponse à votre commentaire @leetbacoon
Et je me demandais simplement pourquoi une copie 1080p est considérée comme la meilleure si la résolution 1440p est disponible? Et pourquoi 2160p est-il affiché? Cette option n'apparaît pas de mon côté (elle plafonne à 1440p) - leetbacoon
À partir de la documentation 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
Je pense que lorsque vous sélectionnez uniquement best
et que vous spécifiez un format de sortie, youtube envoie le format qu’il considère comme le meilleur combo vidéo + audio pour ce format. Cela pourrait être soumis à certaines décisions d’équilibrage internes sur youtube (spéculation).
Dans mon expérience d’utilisation, j’ai dû spécifier spécifiquement bestvideo+bestaudio
pour obtenir la qualité la plus ÉLEVÉE disponible de vidéo et d’audio, puis les combiner dans un conteneur .mkv.
J'utilise /best
comme argument de repli simplement pour en être sûr.