Conversor de YouTube para MP3 feito com Node.js, yt-dlp e FFmpeg. Permite buscar informações de um vídeo e baixar o áudio convertido diretamente pelo browser.
- Node.js + Express — servidor e rotas
- yt-dlp — extração de informações e download do áudio
- FFmpeg / fluent-ffmpeg — conversão para MP3
- HTML/CSS — layout e estilos do front-end
- dotenv — variáveis de ambiente
1. Clone o repositório:
git clone https://github.com/gstvoli/song2u.git
cd song2u2. Instale as dependências:
npm install3. Adicione os executáveis na pasta /bin:
song2u/
├── bin/
│ ├── yt-dlp.exe
│ └── ffmpeg.exe
4. Crie o arquivo .env na raiz:
PORT=8080
HOST=localhost5. Inicie o servidor:
node app.js
# ou com nodemon:
nodemon app.js6. Acesse no browser:
http://localhost:8080
Renderiza a página principal.
Busca informações do vídeo a partir de uma URL.
Body:
{ "url": "https://www.youtube.com/watch?v=XXL29qKb0Jo" }Resposta:
{
"valid": true,
"success": true,
"title": "Nome do vídeo",
"thumbnail": "https://...",
"video_id": "XXL29qKb0Jo",
"duration": 214,
"channel": "Nome do canal",
"channel_url": "https://www.youtube.com/...",
"qualities": ["360p", "480p", "720p", "1080p"]
}Inicia a conversão e faz o stream do arquivo MP3 diretamente para o cliente.
Query params:
| Param | Tipo | Descrição |
|---|---|---|
videoID |
string | ID do vídeo do YouTube |
Resposta: stream de áudio audio/mpeg com header Content-Disposition: attachment.
song2u/
├── bin/
│ ├── ffmpeg.exe
│ └── yt-dlp.exe
├── public/
│ ├── css/
│ │ └── style.css
│ └── js/
│ └── script.js
├── views/
│ └── index.html
├── .env
├── .gitignore
├── app.js
└── package.json
node_modules/
.env
bin/
Os binários
yt-dlp.exeeffmpeg.exenão devem ser versionados — cada ambiente deve baixar os executáveis diretamente nas fontes oficiais.
- O projeto utiliza stream direto para o cliente na conversão. Para vídeos muito longos em ambientes com rede instável, considere implementar um sistema de fila com jobs (uuid + tmpdir) para salvar o arquivo no servidor antes de servir ao cliente.
- O
yt-dlpsuporta mais de 1000 plataformas além do YouTube. Futuramente o projeto pode ser expandido para suporte multi-plataforma (Dailymotion, Vimeo, SoundCloud, etc.). - Plataformas com DRM (Netflix, Spotify, Amazon Prime) não são suportadas.
MIT