Baixe tudo de um vídeo do YouTube usando o youtube-dl

16

Quero baixar tudo (legendas, cartões, tags, anotações, miniaturas etc.) (e obviamente o vídeo com áudio)) de um vídeo do YouTube (por exemplo, este ).

Estou usando youtube-dle, com a enorme quantidade de opções para usar, não consigo encontrar nada que atenda às minhas necessidades. Também quero baixar o vídeo / áudio da mais alta qualidade possível, sem perda de qualidade. Mesmo que não seja o YouTube, eu também queria fazer o download de alguns dos meus cursos udemy que comprei para poder assisti-los enquanto estou em uma longa viagem.

Eu ffmpeginstalei e ouvi dizer que você precisa disso para downloads sem perdas do YouTube, mas não sei como vinculá-lo youtube-dl.

Esta é a primeira vez que uso youtube-dl, então qualquer ajuda é apreciada.

leetbacoon
fonte

Respostas:

14

As opções relevantes que você precisa:

# 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 isso para o seu arquivo de configuração ( /etc/youtube-dl.confou ~/.config/youtube-dl/config).

Usando essa configuração, baixei este vídeo e youtube-dlescrevi os seguintes arquivos:

$ 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

Eu não posso postar mediainfo's saída aqui porque excede o limite de caracteres, mas você pode vê-lo no github .


Também quero baixar o vídeo / áudio da mais alta qualidade possível, sem perda de qualidade.

youtube-dlbaixa vídeos da mais alta qualidade possível por padrão, mas você pode forçar esse comportamento usando --format bestvideo+bestaudio/best.


Mesmo que não seja o YouTube, eu também queria fazer o download de alguns dos meus cursos udemy que comprei para assisti-los enquanto estou em uma longa viagem.

Por favor, leia o artigo Posso baixar um curso para o meu computador? :

Por padrão, os cursos completos não podem ser baixados de um computador. Fazemos isso por preocupações com pirataria.

Observe que você sempre pode salvar cursos para visualização offline no aplicativo móvel da Udemy . Para obter informações sobre como baixar palestras em vídeo para o seu dispositivo móvel iOS, clique aqui . Para etapas sobre como baixar vídeos para visualização offline em um dispositivo Android, clique aqui .


Eu ffmpeginstalei e ouvi dizer que você precisa disso para downloads sem perdas do YouTube, mas não sei como vinculá-lo youtube-dl.

youtube-dlusa avconvpor padrão, mas --prefer-ffmpegpermite que você use ffmpeg. De qualquer forma, esta opção não é necessária para " downloads sem perdas ". No exemplo que forneci, youtube-dlusado apenas ffmpegpara mesclar todos os formatos baixados em um único arquivo MKV.

nxnev
fonte
Isso incorporará as informações do YouTube ao vídeo? Eu não quero exatamente isso, eu só quero que baixá-lo, mas manter isso tudo em arquivos separados, um bocado como o que parece :)
leetbacoon
E o .mkv é o contêiner padrão para vídeos sem perdas youtube-dl?
Leetbacoon
Ah, e como você baixou o vídeo? youtube-dl [youtube-link]?
Leetbacoon
11
@leetbacoon eu vejo. Vou adicionar um relatório de erro.
Nxnev 8/04
11
@leetbacoon Quando escrevi esta resposta, era o contrário, youtube-dlnão seria possível baixar certos vídeos se a --youtube-skip-dash-manifestopção não estivesse presente. Acabei de editar essa opção, obrigado por me dizer.
Nxnev 17/09/19
6

Para simplesmente baixar o vídeo, você pode usar o seguinte:

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

Para selecionar a qualidade do vídeo, você deve primeiro usar a opção -F para listar os formatos disponíveis.

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

E esta é a saída do seu vídeo:

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

Aqui estão algumas opções úteis para legendas:

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

E 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

Você também pode encontrar mais informações sobre a qualidade do vídeo aqui

Mojtaba Zali
fonte
4
O que você espera alcançar com a seleção manual de formatos? youtube-dlusa os melhores formatos de áudio e vídeo disponíveis por padrão. Se você deseja substituir uma configuração diferente no arquivo de configuração, pode usar -f bestvideo+bestaudio/best(que é o mesmo que o padrão) ou ignorar o arquivo de configuração ( --ignore-config).
21418 David Foerster
Não citar-me sobre isso, mas eu pensei que eu li anteriormente que para obter vídeo lossless w / áudio, basta usaryoutube-dl https://www.youtube.com/watch?v=KYBok-XGsKM
leetbacoon
E imaginando, por que uma cópia em 1080p é considerada a melhor se 1440p está disponível? E por que o 2160p é exibido? Essa opção não aparece no meu final (ele tampas em 1440p)
leetbacoon
3

@leetbacoon veja a resposta do comentário na parte inferior. (Rep baixo ainda sry)

Nota: Eu usarei nomes de switch mais longos para evitar confusão. Muitos dos switches usados ​​têm versões mais curtas. Consulte Documentos: Opções .

Nota: - por conveniência visual, \é usado para exibir os interruptores separadamente; tudo \pode ser omitido; se estiver usando, \verifique se não há caracteres de espaço depois \.


Sinopse: Um comando ytdl para baixar um único arquivo de vídeo da mais alta qualidade de áudio e vídeo disponível. Salva o vídeo em seu próprio diretório (especificado por você). Faz o download de todos os metadados disponíveis, grava cada um nos respectivos formatos de arquivo e salva no mesmo diretório. Adiciona metadados de vídeo ao arquivo de saída de vídeo.

Substitua pelo seu:

  • substitua /archive/videos/TED_Archive/nos comutadores --download-archivee --outputpor um caminho de diretório de sua escolha.
  • exemplo de caminho / arquivo / vídeos de armazenamento
  • exemplo de link de vídeo: https://www.youtube.com/watch?v=0bFs6ZiynSU
  • diretório de canal de exemplo / 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: Coloque todos os argumentos com ' 'para analisar a segurança.

Explicação das opções recomendadas:

  • --limit-rate '0.25M'é usado para limitar a velocidade máxima disponível de download de cada instância do youtube-dl em B / s (bytes por segundo).
    Argumentos: qualquer nero inteiro positivo com um sufixo unidade maiúscula.
    Sufixos de unidade: K para Kilobyte; M para Megabyte; Não está claro se o Gigabyte é suportado.
    Além disso:
    1. evite o bloqueio de conexão à Internet.
    2. útil ao gerenciar a velocidade de download de várias instâncias ytdl simultâneas.
    Ommission:
    1. entope a internet; incapaz de navegar, com atraso na reprodução do vídeo do youtube.
    2. baixará o vídeo o mais rápido possível.
    Nota: Você pode executar várias instâncias do youtube-dl simultaneamente.

  • --retries '5'é usado para tentar novamente o download de um vídeo automaticamente, se ele falhar. Útil ao baixar uma lista de reprodução ou um canal inteiro (que é, em termos do Youtube, também uma lista de reprodução (desse canal específico)).
    Valores: escolha qualquer número inteiro positivo. O padrão é 10. Max é infinite(insira como string literal).

  • --continue
    Argumentos: nenhum
    Adição:
    1. forçará a retomada do downalod de arquivos parciais
    Nota: o ytdl baixa vídeos em pedaços; blocos são preservados se o ytdl terminar inesperadamente durante o download.
    Omissão:
    1. Por padrão, o ytdl continuará os downloads, se possível.

  • --no-overwrites
    Argumentos: nenhum
    ainda: será não substituir existente arquivos de metadados com os mesmos nomes.
    Omissão: substituirá os arquivos de metadados existentes com o mesmo nome, mas não o arquivo de vídeo.

    • --call-home usado para entrar em contato com o servidor ytdl para depuração.

      "Se o seu servidor possui vários IPs ou você suspeita de censura, a adição de --call-home pode ser uma boa idéia para obter mais diagnósticos". - Documentos: erros , recuperados 20180408,

  • --write-info-json
    Argumentos: nenhum
    Formato de saída: json;
    Conteúdo informativo: contagem de visualizações, curtidas, data de upload, informações de qualidade de áudio e vídeo, etc. (mas não a descrição do texto do vídeo (postado abaixo do vídeo pelo remetente (layout do youtube em 2018))))
    Adição: grava os metadados do vídeo em um .info.jsonarquivo separado . Salva na mesma pasta que o arquivo de vídeo.
    Omissão: não afeta o --add-metadataque ainda gravará metadados de vídeo no arquivo de saída de vídeo.

  • --write-description
    Argumentos: nenhum
    Formato de saída: texto sem formatação;
    Adição: grava o texto postado pelo carregador de vídeo na seção de descrição de um vídeo (abaixo do vídeo (layout do youtube de 2018)) em um Write .descriptionarquivo separado . Salva na mesma pasta que o arquivo de vídeo.

  • --write-thumbnailgrava a miniatura de maior resolução disponível (chamada maxresdefault.jpgpelo youtube) no .jpgarquivo. Renomeado de acordo com o modelo especificado com --output. Salva no mesmo diretório que o arquivo de vídeo.
    Argumentos: nenhum
    Formato de saída: somente JPEG;
    Nota: use youtube-dl --list-thumbnails '<video_url>'para investigar as miniaturas disponíveis de um vídeo específico (não funciona nos links da lista de reprodução); Ex.:youtube-dl --list-thumbnails 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --write-annotationsgrava anotações em vídeo no .annotations.xmlarquivo. Renomeado de acordo com o modelo especificado com --output. Salva no mesmo diretório que o arquivo de vídeo.
    Argumentos: nenhum
    Formato de saída: .xml;

  • --all-subsescreve todas criadas costume legendas disponíveis para um vídeo para seus respectivos arquivos (ex .: subtitles.en.vtt, subtitles.fr.vtt, subtitles.es.vtt)
    Argumentos: nenhum
    Formato de saída: Padrão .vtt; pode especificar outros formatos com --sub-format
    Mensagens de erro: Se não houver legendas disponíveis, uma mensagem WARNING será impressa no formato stdout:WARNING: video doesn't have subtitles

Comando útil:

Nota: use youtube-dl --list-subs '<video_url>'para investigar as miniaturas disponíveis de um vídeo específico (não funciona nos links da lista de reprodução);
Ex.:youtube-dl --list-subs 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --convert-subs 'srt'
    Argumentos: String: format extension ass, srt ou best
    Formato de saída: padrão .vtt; ou de acordo com a especificação
    Adição: grava legendas no formato de arquivo especificado (ex .:) .srt. Salva na mesma pasta que o arquivo de vídeo.
    Omissão: as legendas serão gravadas como .vtt
    Mensagens de Erro: Se não houver legendas disponíveis, uma mensagem INFO será impressa no formato stdout - formato: [ffmpeg] There aren't any subtitles to convert
    Nota: a conversão será executada como uma etapa de pós-processamento no .vttarquivo após o download. Se a execução do ytdl for encerrada inesperadamente, alguns arquivos de legenda podem não ser convertidos (neste caso, execute o comando novamente).

  • --add-metadata
    Argumentos: nenhum
    Comportamento: grava metadados no arquivo de saída de vídeo.
    Nota: não requer um .info.jsongerado por--write-info-json

  • --embed-subs
    Argumentos: nenhum
    Comportamento:
    1. grava legendas no arquivo de saída de vídeo;
    2. somente para vídeos mp4, webm e mkv
    Mensagens de erro: Se não houver legendas disponíveis, uma mensagem INFO será impressa no formato stdout - formato: [ffmpeg] There aren't any subtitles to embed
    Nota: não requer uma .vttgerada por --write-sub, --write-auto-subou--all-sub

  • --download-archive '<archive_path>/<channel_name>/<channel_name>.ytdlarchive'
    Comportamento: é usado para criar um arquivo de texto contendo links de vídeos baixados anteriormente. Permite pular esses vídeos ao baixar um canal inteiro. Não é necessário ao baixar apenas vídeos únicos.
    Argumentos: String: composto do caminho para o seu arquivo de vídeo, diretório nomeado após o canal. O nome do arquivo consiste no nome do canal com .ytdlarchiveextensão de arquivo. (também pode ser .txt; mas o formato exclusivo permite uma fácil diferenciação)
    Formato de saída: texto sem formatação; um videoID por linha
    Adição:
    1. O ytdl lê esse arquivo, ignora e ignora todos os vídeos listados com seu videoID, mesmo que ainda não tenha baixado.
    2. adiciona automaticamente o ID do vídeo do último vídeo baixado neste arquivo
    Ommission: se existirem arquivos de vídeo e arquivos de metadados, o ytdl fará o download novamente.

  • --format ''
    Argumentos: String recomendada: bestvideo+bestaudio/bestpara garantir a mais alta combinação de qualidade de vídeo e áudio.
    Adição: controle total sobre a qualidade do vídeo e a qualidade do áudio e suas combinações, bem como as qualidades de fallback
    Ommissão: Padrão youtube-dl will guess it for you by default- Documentos
    Nota: Consulte Documentos: Exemplos de seleção de formato

  • --merge-output-format '<video_format>'
    Argumentos: formato de arquivo de vídeo. (por exemplo: mp4, mkv, 3gp, etc.)
    Adição: pode especificar o formato do arquivo de vídeo
    Omissão: Padrão youtube-dl will guess it for you by default- Documentos
    Nota: Consulte Documentos: Seleção de formato

Comando útil:

Nota: use youtube-dl --list-formats '<video_url>'para investigar as qualidades e formatos de vídeo e áudio disponíveis de um vídeo específico (não funciona nos links da lista de reprodução);
Ex.:youtube-dl --list-formats 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --output '<template>'
    Argumentos:
    1. formato de arquivo de vídeo. (por exemplo: mp4, mkv, 3gp, etc.);
    2. Recomendado: %(upload_date)s_%(id)s_%(title)s.%(ext)s
    adição: influencia a convenção de nomenclatura de arquivos de vídeo e todos os arquivos de metadados
    Ommissão: Por padrão, o título do vídeo será o nome do arquivo. Modelo padrão: %(id)s.%(ext)sserá exibido ex . testvideo.mkv
    : Nota: Não esqueça o %prefixo e o ssufixo (outros sufixos também existem.); Você _entre os elementos do modelo é apenas um separador e pode ser qualquer outro caractere. ex . %(upload_date)s-%(id)s
    : Nota: Consulte Documentos: modelo de saída

  • '<video_url>'
    Argumentos: String: URL para vídeo específico
    Mensagem de erro:
    1. Se nenhum URL de vídeo enviado, o ytdl não será executado e exibirá a ajuda.
    2. Se a mensagem de ERRO enviada por um URL de vídeo inválido for impressa no formato stdout -:ERROR: u'' is not a valid URL. Set --default-search "ytsearch" (or run youtube-dl "ytsearch:" ) to search YouTube


Recomendações de armazenamento:

  1. crie um miscdiretório em seu arquivo de vídeo e armazene todos os vídeos individuais lá.

  2. quando você baixar um ou mais vídeos de um canal, crie um diretório dedicado para esse canal. Nesse caso, o nome do canal é TED Archivee o nome do diretório será TED_Archive. (Substituo preventivamente todos os caracteres de espaço por sublinhados para facilitar a navegação no diretório e ações de E / S de arquivo ao usar scripts bash (ou python)).


Respondendo ao seu comentário @leetbacoon

E imaginando, por que uma cópia em 1080p é considerada a melhor se 1440p está disponível? E por que o 2160p é exibido? Essa opção não aparece no meu final (termina em 1440p) - leetbacoon

Dos 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

Eu acho que quando você selecionar apenas beste você especificar um formato de saída youtube envia o formato ele pensa que é o melhor vídeo de áudio + combinação para esse formato. Isso pode estar sujeito a algumas decisões de balanceamento interno do YouTube (especulação).


Na minha experiência de uso, tive que especificar especificamente bestvideo+bestaudiopara obter a mais alta qualidade disponível de vídeo e áudio, respectivamente, e depois combiná-los em um contêiner .mkv.


Eu uso /bestcomo argumento de fallback apenas para ter certeza.


Sonhando com Cortana
fonte