YouTube Music Player for VS Code
Nghe nhạc YouTube ngay trong Activity Bar của VS Code. Extension dùng yt-dlp
để tìm/đọc playlist và mpv để phát nhạc qua JSON IPC.
Tính năng
- Search YouTube trực tiếp trong sidebar.
- Now playing: ảnh thumbnail, tên bài, channel và tiến độ.
- Play/pause, previous, next, stop, seek và volume.
- Tải bài đang phát dưới dạng Video MP4 hoặc Audio MP3 bằng
yt-dlp.
- Built-in streaming player và Media Session cho máy không có
mpv.
- Queue có thể thêm, phát, xóa từng bài hoặc xóa toàn bộ.
- Search Results và Queue có thể thu gọn/mở rộng bằng cách nhấn vào tiêu đề.
- Queue và history được lưu theo workspace.
- Tự lấy related tracks từ YouTube Mix khi queue hết.
- Nút refresh để lấy lại related tracks thủ công.
- Regex include/exclude giúp bỏ trailer, reaction, review, podcast, Shorts…
- Chế độ audio-only mặc định, không mở cửa sổ video.
Yêu cầu
yt-dlp là bắt buộc. mpv là backend mặc định nhưng không còn bắt buộc:
extension tự fallback sang built-in HTML audio player nếu không chạy được
mpv, hoặc có thể bật youtubeMusic.noMpv. Tải MP3 và ghép video/audio MP4
cần thêm ffmpeg.
Ubuntu/Debian:
sudo apt install mpv ffmpeg wget curl
sudo wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O /usr/local/bin/yt-dlp
sudo chmod a+rx /usr/local/bin/yt-dlp
macOS:
brew install mpv yt-dlp ffmpeg
Windows (winget):
winget install mpv
winget install yt-dlp.yt-dlp
winget install Gyan.FFmpeg
Nếu executable không nằm trong PATH, đặt đường dẫn đầy đủ tại
youtubeMusic.mpvPath và youtubeMusic.ytDlpPath.
Sử dụng
- Nhấn biểu tượng YouTube Music trong Activity Bar.
- Nhập tên bài hát/nghệ sĩ và nhấn Search.
- Nhấn
▶ để phát ngay hoặc + để thêm vào queue.
- Nhấn
↻ ở phần Queue để làm mới danh sách related tracks.
- Nhấn biểu tượng Download cạnh player controls, chọn MP4/MP3 và vị trí lưu.
Các lệnh cũng có trong Command Palette với tiền tố YouTube Music.
Cấu hình
| Setting |
Mặc định |
Ý nghĩa |
youtubeMusic.mpvPath |
mpv |
Đường dẫn executable mpv |
youtubeMusic.ytDlpPath |
yt-dlp |
Đường dẫn executable yt-dlp |
youtubeMusic.searchLimit |
20 |
Số kết quả tìm kiếm tối đa |
youtubeMusic.includeFilter |
rỗng |
Chỉ giữ title/channel khớp regex |
youtubeMusic.excludeFilter |
regex non-music |
Loại video khớp regex |
youtubeMusic.autoRelated |
true |
Tự lấy related khi queue hết |
youtubeMusic.relatedLimit |
20 |
Số related tracks mỗi lần |
youtubeMusic.defaultVolume |
70 |
Âm lượng khởi tạo |
youtubeMusic.audioOnly |
true |
Không mở cửa sổ video |
youtubeMusic.noMpv |
false |
Luôn dùng built-in streaming player thay cho mpv |
youtubeMusic.restorePlayback |
true |
Giữ mpv phát và khôi phục Now Playing sau Reload Window |
youtubeMusic.downloadDirectory |
rỗng |
Thư mục tải mặc định; rỗng để nhớ vị trí chọn gần nhất |
youtubeMusic.ytDlpDownloadArgs |
[] |
Custom arguments chỉ dùng khi download |
youtubeMusic.debugLogs |
false |
Ghi error, info, full lệnh yt-dlp và port proxy vào Output → YouTube Music Player |
Mỗi custom argument và giá trị của nó là một phần tử riêng. Ví dụ dùng cookies
từ Firefox và giới hạn tốc độ tải:
{
"youtubeMusic.ytDlpDownloadArgs": [
"--cookies-from-browser",
"firefox",
"--limit-rate",
"5M"
]
}
Các argument do extension quản lý như output path và định dạng MP3/MP4 được
thêm sau custom arguments để đảm bảo file được lưu đúng lựa chọn trong giao diện.
Khi youtubeMusic.noMpv bật hoặc mpv không khả dụng, extension dùng yt-dlp
để resolve URL bestaudio. Một HTTP proxy chỉ lắng nghe trên localhost sẽ:
- forward
Range requests để seek;
- dùng User-Agent, Referer và các HTTP headers do
yt-dlp trả về;
- thêm CORS headers cho VS Code webview;
- không lưu audio xuống ổ đĩa.
Webview phát stream bằng HTMLAudioElement và đăng ký Media Session API, nên
hệ điều hành có thể hiển thị title, artist, thumbnail và các nút
play/pause/next/previous/seek. Khả năng hiển thị cụ thể phụ thuộc phiên bản VS
Code/Electron và desktop environment.
Trước khi phát, extension kiểm tra một Range request nhỏ để loại URL đã hết hạn
hoặc endpoint trả HTTP 403. Webview báo khả năng giải mã M4A/AAC và WebM/Opus;
resolver ưu tiên format tương thích và tự thử format còn lại nếu Chromium báo
MEDIA_ERR_SRC_NOT_SUPPORTED.
Khôi phục mpv sau Reload Window
youtubeMusic.restorePlayback mặc định bật và chỉ áp dụng cho backend mpv.
Trước khi Extension Host tắt, extension giữ tiến trình mpv cùng IPC socket và
arm watchdog 15 giây. Host mới reconnect, hủy watchdog rồi đọc lại pause state,
position, duration và volume trực tiếp từ mpv; media không bị load lại nên âm
thanh tiếp tục trong lúc VS Code reload.
Nếu VS Code thực sự đóng hoặc host mới không reconnect trong 15 giây, watchdog
tự tắt mpv để tránh tiến trình mồ côi. Built-in HTML audio không dùng cơ chế
này.
Regex được chạy không phân biệt hoa/thường trên chuỗi title + channel. Ví dụ
chỉ ưu tiên video có dấu hiệu là nhạc:
{
"youtubeMusic.includeFilter": "\\b(audio|official|lyrics?|mv|music)\\b",
"youtubeMusic.excludeFilter": "\\b(live stream|reaction|review|tutorial|podcast|shorts?)\\b"
}
Để không lọc exclude, đặt youtubeMusic.excludeFilter thành chuỗi rỗng.
Phát triển
npm install
npm run compile
Nhấn F5 trong VS Code để chạy Extension Development Host. Dùng
npm run watch trong khi phát triển.
Lưu ý
- Kết quả và related tracks phụ thuộc vào YouTube/
yt-dlp; hãy cập nhật
yt-dlp nếu extraction ngừng hoạt động.
- Nội dung bị giới hạn khu vực, riêng tư hoặc cần đăng nhập có thể không phát.
- Hãy tuân thủ điều khoản YouTube và quy định bản quyền tại nơi bạn sống.
- YouTube là nhãn hiệu đã được đăng ký thuộc sở hữu của Google LLC.Project này hoàn toàn không hợp tác với Google hoặc Youtube