Descargue todo desde un video de YouTube usando youtube-dl

16

Quiero descargar todo (subtítulos, tarjetas, etiquetas, anotaciones, miniaturas, etc. (y obviamente el video con audio)) de un video de YouTube (por ejemplo, este ).

Estoy usando youtube-dly, con la cantidad abrumadora de interruptores para usar, parece que no puedo encontrar nada que se ajuste a mis necesidades. También quiero descargar el video / audio con la mayor calidad posible, sin pérdida de calidad. Aunque no es YouTube, también quería descargar algunos de los cursos de udemy que compré para poder verlos mientras estoy en un largo viaje por carretera.

He ffmpeginstalado y escuché que necesitas esto para descargas sin pérdida de YouTube, pero no estoy seguro de cómo vincularlo youtube-dl.

Esta es la primera vez que uso youtube-dl, por lo que se agradece cualquier ayuda.

leetbacoon
fuente

Respuestas:

14

Las opciones relevantes que necesita:

# 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

Copie eso en su archivo de configuración (ya sea /etc/youtube-dl.confo ~/.config/youtube-dl/config).

Usando esa configuración, descargué este video y youtube-dlescribí los siguientes archivos:

$ 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

No puedo publicar mediainfoel resultado aquí porque excede el límite de caracteres, pero puedes verlo en github .


También quiero descargar el video / audio en la mejor calidad posible, sin pérdida de calidad.

youtube-dldescargas de vídeos de la más alta calidad posible de forma predeterminada, pero se puede forzar el uso de este comportamiento --format bestvideo+bestaudio/best.


Aunque no es YouTube, también quería descargar algunos de los cursos de udemy que compré para poder verlos mientras estoy en un largo viaje por carretera.

Lea el artículo ¿Puedo descargar un curso en mi computadora? :

Por defecto, los cursos completos no se pueden descargar desde una computadora. Hacemos esto por preocupación por la piratería.

Tenga en cuenta que siempre puede guardar cursos para verlos sin conexión en la aplicación móvil Udemy . Para obtener información sobre cómo descargar video conferencias en su dispositivo móvil iOS, haga clic aquí . Para conocer los pasos sobre cómo descargar videos para verlos sin conexión en un dispositivo Android, haga clic aquí .


He ffmpeginstalado y escuché que necesitas esto para descargas sin pérdida de YouTube, pero no estoy seguro de cómo vincularlo youtube-dl.

youtube-dlutiliza avconvde forma predeterminada, pero le --prefer-ffmpegpermite usar ffmpegen su lugar. De todos modos, esta opción no es necesaria para " descargas sin pérdida ". En el ejemplo que proporcioné, youtube-dlsolo se usa ffmpegpara combinar todos los formatos descargados en un solo archivo mkv.

nxnev
fuente
¿Esto incluirá la información de YouTube en el video? No quiero exactamente eso, solo quiero que lo descarguen, pero mantenlo todo en archivos separados, algo así como se ve :)
leetbacoon
¿Y es .mkv el contenedor predeterminado para usar videos sin pérdida youtube-dl?
leetbacoon
Ah, y ¿cómo descargaste el video? youtube-dl [youtube-link]?
leetbacoon
1
@leetbacoon Ya veo. Agregaré un informe de error.
nxnev
1
@leetbacoon Cuando escribí esta respuesta, era todo lo contrario, youtube-dlno habría podido descargar ciertos videos si la --youtube-skip-dash-manifestopción no estuviera presente. Acabo de editar esa opción, gracias por decírmelo.
nxnev
6

Para simplemente descargar el video, puede usar esto:

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

Para seleccionar la calidad del video, primero debe usar la opción -F para enumerar los formatos disponibles.

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

Y esta es la salida para tu 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)

Aquí hay algunas opciones útiles para los subtítulos:

   --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

Y para miniaturas:

   --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

También puede encontrar más información sobre la calidad del video aquí.

Mojtaba Zali
fuente
44
¿Qué espera lograr con la selección de formato manual? youtube-dlutiliza los mejores formatos de video y audio disponibles de forma predeterminada. Si desea anular una configuración diferente en el archivo de configuración, puede usarla -f bestvideo+bestaudio/best(que es la misma que la predeterminada) o ignorar el archivo de configuración ( --ignore-config).
David Foerster
No me cite sobre esto, pero pensé que había leído antes que para obtener video sin pérdida con audio, simplemente useyoutube-dl https://www.youtube.com/watch?v=KYBok-XGsKM
leetbacoon
Y me pregunto, ¿por qué una copia de 1080p se considera la mejor si hay 1440p disponible? ¿Y por qué se muestra 2160p? Esa opción no aparece en mi extremo (se
limita
3

@leetbacoon ver la respuesta al comentario en la parte inferior. (baja reputación todavía sry)

Nota: utilizaré los nombres de cambio más largos para evitar confusiones. Muchos de los interruptores utilizados tienen versiones más cortas. Ver Documentos: Opciones .

Nota: - por conveniencia visual \se utiliza para mostrar los interruptores por separado; todo \puede ser omitido; si usa \asegúrese de que no haya caracteres de espacio después \.


Sinopsis: Un comando ytdl para descargar un solo archivo de video con la mejor calidad de video y audio disponible. Guarda el video en su propio directorio (especificado por usted). Descarga todos los metadatos disponibles, escribe cada uno en los formatos de archivo respectivos y los guarda en el mismo directorio. Agrega metadatos de video al archivo de salida de video.

Sustitúyalo por el suyo:

  • reemplace /archive/videos/TED_Archive/en los interruptores --download-archivey --outputcon una ruta de directorio de su elección.
  • ejemplo de ruta de almacenamiento / archivo / videos
  • enlace de video de ejemplo: https://www.youtube.com/watch?v=0bFs6ZiynSU
  • ejemplo de directorio de canales / 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' ;

Nota: Incluya todos los argumentos ' 'para analizar la seguridad.

Explicación de los interruptores recomendados:

  • --limit-rate '0.25M'se usa para limitar la velocidad máxima de descarga disponible de cada instancia de youtube-dl en B / s (bytes por segundo).
    Argumentos: cualquier número entero positivo con un sufijo de unidad en mayúscula.
    Sufijos de unidad: K para Kilobyte; M para Megabyte; No está claro si Gigabyte es compatible.
    Adición:
    1. evitar el bloqueo de la conexión a internet.
    2. útil al administrar velocidades de descarga de múltiples instancias simultáneas de ytdl.
    Omisión:
    1. obstruye internet; incapaz de navegar, retrasándose la reproducción de videos de YouTube.
    2. descargará el video lo más rápido posible.
    Nota: puede ejecutar varias instancias de youtube-dl al mismo tiempo.

  • --retries '5'se usa para volver a intentar automáticamente la descarga de un video si falla. Útil al descargar una lista de reproducción o un canal completo (que es, en términos de Youtube, también una lista de reproducción (de ese canal específico)).
    Valores: elija cualquier número entero positivo. Por defecto es 10. Max es infinite(ingrese como cadena literal).

  • --continue
    Argumentos: ninguno
    Adición:
    1. obligará a reanudar la descarga de archivos parciales
    Nota: ytdl descarga videos en fragmentos; los fragmentos se conservan si ytdl termina inesperadamente durante la descarga.
    Ommisión:
    1. Por defecto, ytdl reanudará las descargas, si es posible.

  • --no-overwrites
    Argumentos: ninguno
    de adición: se no sobrescribir los archivos de metadatos con los mismos nombres existente.
    Ommission: sobrescribirá los archivos de metadatos existentes con los mismos nombres, pero no el archivo de video.

    • --call-home se usa para contactar al servidor ytdl para la depuración.

      "Si su servidor tiene varias direcciones IP o sospecha de censura, agregar --call-home puede ser una buena idea para obtener más diagnósticos". - Documentos: errores , recuperados 20180408,

  • --write-info-json
    Argumentos: ninguno
    Formato de salida: json;
    Contenido de información: recuento de visitas, me gusta, fecha de carga, información de calidad de video y audio, etc. (pero no la descripción del texto del video (publicado debajo del video por el cargador (diseño de YouTube 2018)))
    Adición: escribe los metadatos del video en un .info.jsonarchivo separado . Guardado en la misma carpeta que el archivo de video.
    Omisión: no afecta a quién--add-metadata seguirá escribiendo metadatos de video en el archivo de salida de video.

  • --write-description
    Argumentos: ninguno
    Formato de salida: texto sin formato;
    Adición: escribe el texto publicado por el cargador de video en la sección de descripción de un video (debajo del video (diseño de YouTube 2018)) en un Write .descriptionarchivo separado . Guardado en la misma carpeta que el archivo de video.

  • --write-thumbnailescribe la miniatura de mayor resolución disponible (llamada maxresdefault.jpgpor youtube) en el .jpgarchivo Renombrado según la plantilla especificada con --output. Guardado en el mismo directorio que el archivo de video.
    Argumentos: ninguno
    Formato de salida: solo JPEG;
    Nota: Úselo youtube-dl --list-thumbnails '<video_url>'para investigar las miniaturas disponibles de un video específico (no funciona en los enlaces de listas de reproducción); Ex.:youtube-dl --list-thumbnails 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --write-annotationsescribe anotaciones de video para .annotations.xmlarchivar. Renombrado según la plantilla especificada con --output. Guardado en el mismo directorio que el archivo de video.
    Argumentos: ninguno
    Formato de salida: .xml;

  • --all-subsescribe todos los subtítulos disponibles personalizado creado para un vídeo a sus respectivos archivos (ej .: subtitles.en.vtt, subtitles.fr.vtt, subtitles.es.vtt)
    Argumentos: ninguno
    Formato de salida: por defecto .vtt; puede especificar otros formatos con --sub-format
    mensajes de error: si no hay subtítulos disponibles, se imprimirá un mensaje de ADVERTENCIA en formato stdout:WARNING: video doesn't have subtitles

Comando útil:

Nota: Úselo youtube-dl --list-subs '<video_url>'para investigar las miniaturas disponibles de un video específico (no funciona en los enlaces de listas de reproducción);
Ex.:youtube-dl --list-subs 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --convert-subs 'srt'
    Argumentos: Cadena: extensión de formato ass, srt o mejor
    Formato de salida: Predeterminado .vtt; o de acuerdo con las especificaciones
    de la adición: escribe subtítulos de formato de archivo especificado (ej .: .srt). Guardado en la misma carpeta que el archivo de video.
    Ommisión: los subtítulos se escribirán como .vtt
    mensajes de error: si no hay subtítulos disponibles, se imprimirá un mensaje INFO en formato stdout: [ffmpeg] There aren't any subtitles to convert
    Nota: la conversión se ejecutará como un paso de procesamiento posterior en el .vttarchivo después de la descarga. Si la ejecución de ytdl finaliza inesperadamente, es posible que algunos archivos de subtítulos no se conviertan (en este caso, ejecute nuevamente el comando).

  • --add-metadata
    Argumentos: ninguno
    Comportamiento: escribe metadatos en el archivo de salida de video.
    Nota: no requiere un .info.jsongenerado por--write-info-json

  • --embed-subs
    Argumentos: ninguno
    Comportamiento:
    1. escribe subtítulos en el archivo de salida de video;
    2. solo para videos mp4, webm y mkv
    Mensajes de error: Si no hay subtítulos disponibles, se imprimirá un mensaje INFO en formato stdout: [ffmpeg] There aren't any subtitles to embed
    Nota: no requiere un .vttgenerado por --write-sub, --write-auto-subo--all-sub

  • --download-archive '<archive_path>/<channel_name>/<channel_name>.ytdlarchive'
    Comportamiento: se utiliza para crear un archivo de texto que contiene enlaces de videos descargados previamente. Permite omitir estos videos al descargar un canal completo. No es necesario al descargar videos individuales solamente.
    Argumentos: Cadena: compuesto de la ruta a su archivo de video, directorio con el nombre del canal. El nombre del archivo consiste en el nombre del canal con .ytdlarchiveextensión de archivo. (también podría ser .txt; pero el formato único permite una fácil diferenciación)
    Formato de salida: texto sin formato; un videoID por línea
    Adición:
    1. ytdl lee este archivo, ignora y omite todos los videos enumerados con su videoID, incluso si aún no se ha descargado.
    2. agrega automáticamente el videoID del último video descargado a este archivo
    Ommission: si existen archivos de video y metadatos, ytdl los descargará nuevamente.

  • --format ''
    Argumentos: Cadena recomendada: bestvideo+bestaudio/bestpara garantizar la mejor combinación de video y calidad de audio.
    Adición: control total sobre la calidad de video y la calidad de audio y sus combinaciones, así como las cualidades de
    respaldo Ommission: Predeterminado youtube-dl will guess it for you by default- Docs
    Nota: Ver Docs: Ejemplos de selección de formato

  • --merge-output-format '<video_format>'
    Argumentos: formato de archivo de video. (ej .: mp4, mkv, 3gp, etc.)
    Adición: puede especificar el formato de archivo de video
    Ommission: Predeterminado youtube-dl will guess it for you by default- Docs
    Nota: Ver Docs: Selección de formato

Comando útil:

Nota: Úselo youtube-dl --list-formats '<video_url>'para investigar las calidades y formatos de video y audio disponibles de un video específico (no funciona en enlaces de listas de reproducción);
Ex.:youtube-dl --list-formats 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --output '<template>'
    Argumentos:
    1. formato de archivo de video. (ej .: mp4, mkv, 3gp, etc.);
    2. Recomendado: %(upload_date)s_%(id)s_%(title)s.%(ext)s
    adición: influye en la convención de nomenclatura de archivos para archivos de video y todos los archivos de metadatos.
    Ommisión: por defecto, el título del video será el nombre del archivo. Plantilla predeterminada: %(id)s.%(ext)sgenerará, por ejemplo: testvideo.mkv
    Nota: No olvide el %prefijo y el ssufijo (también existen otros sufijos); Thee _entre elementos de plantilla es solo un separador y puede ser cualquier otro carácter. ej . %(upload_date)s-%(id)s
    : Nota: Ver Documentos: Plantilla de salida

  • '<video_url>'
    Argumentos: Cadena: url a video específico
    Mensaje de error:
    1. Si no se envió una url de video, ytdl no se ejecutará y mostrará ayuda.
    2. Si la url de video inválida envió el mensaje de ERROR se imprimirá en formato stdout:ERROR: u'' is not a valid URL. Set --default-search "ytsearch" (or run youtube-dl "ytsearch:" ) to search YouTube


Recomendaciones de almacenamiento:

  1. haga un miscdirectorio en su archivo de video y almacene todos los videos individuales allí.

  2. cuando descargue uno o más videos de un canal, cree un directorio dedicado para ese canal. En este caso, el nombre del canal es TED Archivey el nombre del directorio será TED_Archive. (Sustituyo preventivamente todos los caracteres de espacio con guiones bajos para facilitar la navegación del directorio y las acciones de E / S de archivo cuando utilizo los scripts bash (o python)).


Respondiendo a tu comentario @leetbacoon

Y me pregunto, ¿por qué una copia de 1080p se considera la mejor si hay 1440p disponible? ¿Y por qué se muestra 2160p? Esa opción no aparece en mi extremo (se limita a 1440p) - leetbacoon

De los documentos
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

Creo que cuando selecciona solo besty especifica un formato de salida, YouTube envía el formato que cree que es el mejor combo de video + audio para ese formato. Esto podría estar sujeto a algunas decisiones de equilibrio interno de YouTube (especulación).


En mi experiencia de uso, he tenido que especificar específicamente bestvideo+bestaudiopara obtener la MÁXIMA calidad disponible de video y audio respectivamente y luego combinarlos en un contenedor .mkv.


Lo uso /bestcomo argumento alternativo solo para estar seguro.


Soñando con Cortana
fuente