Pitch: cansei de baixar vídeo em 1080p sem áudio, então automatizei o merge pra mim mesmo
Comecei a notar isso há uns dois anos: baixava um vídeo em 720p e vinha certinho, imagem e som juntos. Se eu queria 1080p ou 4K, o arquivo vinha mudo, ou o download travava faltando 2% e nunca terminava. Fiquei um tempo andando em círculos até entender que não era bug de ferramenta nenhuma — é assim que o YouTube entrega vídeo.
Por que acontece: acima de 720p o YouTube serve o conteúdo via DASH (streaming adaptativo) — vídeo e áudio vêm como dois arquivos separados, sincronizados só na hora de tocar. Dá pra confirmar com yt-dlp -F "URL": repare nas colunas: tem um formato marcado como video only e outro como audio only. O "trava no fim" nem sempre é o download travando: quase sempre é o merge rodando, o ffmpeg ainda processando o arquivo no disco depois da barra chegar em 100%.
Resolver na mão é simples quando dá pra instalar coisa: yt-dlp -f "bv*+ba" --merge-output-format mkv "URL". Três detalhes que demorei a aprender: isso exige ffmpeg no PATH, sem ele o yt-dlp para com erro de que não consegue fazer o merge; usar mkv, não mp4, quando tiver dúvida, evita recodificação; pra MP4 de verdade, pedir faixas compatíveis desde o início com -f "bv*[ext=mp4]+ba[ext=m4a]". Pra quem quer só o áudio: yt-dlp -x --audio-format mp3 "URL" resolve igual.
Só que no notebook do trabalho, no celular ou num Chromebook não tem terminal nem PATH. Foi resolvendo isso pra mim mesmo, pra arquivar palestra e guardar material de estudo, que acabei montando o VidKeep (https://vidkeep.app) — ele faz esse mesmo processo do lado do servidor: escolhe o merge certo, o contêiner, extrai áudio se for só isso que eu quiser, sem precisar instalar nada. Roda numa VPS pequena porque o merge usa stream copy, sem reencode, CPU perto de zero mesmo nos horários de pico.
Como o projeto é meu, prefiro deixar claro em vez de vender "ilimitado" e decepcionar depois: o plano gratuito dá 30 downloads por dia, dos quais até 10 podem ser acima de 720p, justamente os que passam pelo merge. O arquivo final tem teto de 1500 MB no gratuito, 4096 MB no pago. O pago não aumenta a cota diária, continua 30 por dia, só muda qualidade, peso, paralelismo e download em lote.
Não sou neutro aqui: é o meu produto, feito porque eu mesmo tinha esse problema. Sobre o que é permitido baixar: varia por país e por finalidade, e tem um artigo no blog só sobre isso (https://vidkeep.app/pt/blog/is-downloading-videos-legal-eu). O uso que descrevo aqui é pessoal: assistir offline, arquivar conteúdo próprio, estudar sem depender de conexão.
Curioso pra saber: quem mais aqui já caiu nessa armadilha do "download travado" achando que era bug?