A extração e o download de mídia do YouTube via linha de comando são tarefas comuns para desenvolvedores e entusiastas de tecnologia. Historicamente, o youtube-dl foi a ferramenta padrão para essa finalidade. No entanto, devido a limitações de desempenho e throttling imposto pelas plataformas, alternativas mais modernas têm se mostrado essenciais. Este artigo analisa a transição do youtube-dl para o yt-dlp, destacando melhorias de velocidade e simplificação de parâmetros.
Instalação e Configuração Inicial
Ambas as ferramentas podem ser gerenciadas através do gerenciador de pacotes do Python. Recomenda-se a instalação em um ambiente virtual para evitar conflitos de dependências no sistema.
python -m venv venv
source venv/bin/activate # No Windows: venv\Scripts\activate
pip install youtube-dl yt-dlp
Limitações do youtube-dl
O repositório original do youtube-dl enfrentou problemas de manutenção e remoção no GitHub no passado, embora tenha sido restaurado. O princiapl gargalo atual é a velocidade de download, que frequentemente é restrita a poucos kilobytes por segundo devido a mecanismos de rate-limiting do YouTube.
Para baixar uma playlist, a sintaxe tradicional exige combinações complexas de seletores de formato:
youtube-dl --proxy socks5://127.0.0.1:8080 \
-f "bestvideo[height<=1080]+bestaudio/best[height<=1080]" \
-o "%(uploader)s - %(title)s.%(ext)s" \
--embed-thumbnail \
--playlist-items 1-9 \
"https://www.youtube.com/playlist?list=PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf"
O parâmetro --playlist-items define o intervalo de vídeos. O seletor -f tenta obter o melhor vídeo até 1080p combinado com o melhor áudio, fazendo fallback para o melhor formato único se a combinação falhar.
A Era do yt-dlp
O yt-dlp surgiu como um fork ativo que resolve os problemas de throttling e oferece uma arquitetura mais limpa. Ele suporta nativaemnte downloaders externos, como o aria2c, embora o downloader padrão já opere em velocidades máximas na maioria dos cenários.
Download de Vídeo Único e Playlists
A sintaxe do yt-dlp é mais direta. Para baixar um vídeo específico utilizando IDs de formato específicos:
yt-dlp -f "137+140" \
--proxy http://127.0.0.1:7890 \
--merge-output-format mp4 \
"https://www.youtube.com/watch?v=dQw4w9WgXcQ"
Para processar múltiplos vídeos de uma playlist:
yt-dlp --playlist-items 1-9 \
--proxy http://127.0.0.1:7890 \
--merge-output-format mp4 \
"https://www.youtube.com/playlist?list=PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf"
Entendendo os Códigos de Formato (DASH)
Para resoluções de 1080p e superiores, o YouTube utiliza o Dynamic Adaptive Streaming over HTTP (DASH), onde o fluxo de vídeo e o fluxo de áudio são transmitidos separadamente. O formato 137 refere-se ao vídeo MP4 em 1080p, enquanto o 140 é o áudio M4A. O yt-dlp baixa ambas as streams e invoca automaticamente o ffmpeg (que deve estar instalado no sistema) para multiplexá-las em um único arquivo.
Para descobrri os IDs de formato disponíveis para um vídeo específico, utilize o parâmetro -F:
yt-dlp -F --proxy http://127.0.0.1:7890 "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
A saída exibirá uma tabela detalhada com as resoluções, codecs e tamanhos:
[youtube] Extracting URL: https://www.youtube.com/watch?v=dQw4w9WgXcQ
[youtube] dQw4w9WgXcQ: Downloading webpage
[info] Available formats for dQw4w9WgXcQ:
ID EXT RESOLUTION FPS CH │ FILESIZE TBR PROTO │ VCODEC VBR ACODEC ABR ASR MORE INFO
──────────────────────────────────────────────────────────────────────────────────────────────────────────────
140 m4a audio only 2 │ 3.50MiB 128k https │ audio only mp4a.40.2 128k 44k medium
251 webm audio only 2 │ 3.80MiB 135k https │ audio only opus 135k 48k medium
22 mp4 1280x720 30 2 │ 35.00MiB 1200k https │ avc1.64001F 1200k mp4a.40.2 0k 44k 720p
136 mp4 1280x720 30 │ 30.50MiB 1050k https │ avc1.4d401f 1050k video only 720p
137 mp4 1920x1080 30 │ 95.00MiB 3200k https │ avc1.640028 3200k video only 1080p
248 webm 1920x1080 30 │ 60.00MiB 2000k https │ vp9 2000k video only 1080p
Com essa lista, é possível combinar estrategicamente os IDs (como 137+140 para 1080p com áudio AAC, ou 248+251 para 1080p VP9 com áudio Opus) para otimizar o tamanho e a qualidade do arquivo final.