raspi gửi vào
- 29320 lượt xem
Arduino đã phát nhạc nhưng lại rất vất vả. Mình muốn Raspberry Pi sẽ đảm nhận việc này để việc này đơn giản hơn. Mình sẽ hướng dẫn các bạn chơi các nhạc ở local (thẻ nhớ) và các bài nhạc ở trên Internet! Một cái hay nữa là, các package mà mình hướng dẫn các bạn đều có thư viện cho nodejs!
Cài đặt Raspbian
Các bạn xem bài viết này "Cài đặt Raspbian trên Raspberry PI - Hệ điều hành dành cho developer dựa trên nền Debian - Cài Raspbian không cần màn hình LCD" của mình nhé.
Phát nhạc từ thẻ nhớ (local)
Các bạn hãy đăng nhập bằng account pi và chạy các lệnh sau nhé.
Hãy chuẩn bị một file mp3 để test! Mình sẽ một file mp3 miễn phí từ http://download.wavetlan.com/SVV/Media/HTTP/http-mp3.htm để test nhé.
sudo wget http://download.wavetlan.com/SVV/Media/HTTP/MP3/Helix_Mobile_Producer/HelixMobileProducer_test1_MPEG2_Mono_CBR_40kbps_16000Hz.mp3 -O test.mp3
Dòng trên sẽ download file tại http://download.wavetlan.com/SVV/Media/HTTP/MP3/Helix_Mobile_Producer/HelixMobileProducer_test1_MPEG2_Mono_CBR_40kbps_16000Hz.mp3 và lưu lại với tên test.mp3.
Gắn loa vô raspberry vào jack 3.5mm như hình dưới
Và phát nhạc thôi
omxplayer test.mp3
Nếu bạn thích chơi màn hình HDMI và không có loa để test thì bạn cũng có thể test bằng màn hình đó bằng cách chuyển output âm thanh vào hdmi
omxplayer -o hdmi test.mp3
Nhược điểm của cách tiếp cận mặc định của Raspberry Pi đó là:
- Không sử dụng ALSA
- Chỉ chơi được ở local (thẻ nhớ)
Phát nhạc từ Internet
Nếu là một người ưa thích mạng thì bạn chẳng thể nào hài lòng với những hạn chế của omxplayer. Vì vậy, mình xin chia sẻ với các bạn cách sử dụng mpg123 để phát stream hoặc một file audio trên mạng!
Cài gói mpg123
sudo apt-get install -y mpg123
Bạn chạy thử với file test.mp3 vừa rồi! Nếu để ý kỹ thì bạn thấy âm lượng chỉ còn 50% trong khi bạn không làm gì khác ngoài việc cài gói này!
mpg123 http://download.wavetlan.com/SVV/Media/HTTP/MP3/Helix_Mobile_Producer/HelixMobileProducer_test1_MPEG2_Mono_CBR_40kbps_16000Hz.mp3
Mình đã thử với các gói khác như mplayer, mpg321 thì đều cho kết quả tương tự. Như vậy, nếu các gói được xây dựng trên thư viện ALSA thì bạn buộc phải dùng một usb audio để phát!
Nhưng vấn đề nãy sinh đó là, bạn phải biết cách để phát nhạc vào usb driver này!
Card âm thanh và Raspberry Pi
Mặc định, Raspberry Pi sẽ sử dụng card âm thanh 0,0 để phát nhạc. Vậy card âm thanh 0,0 là gì?
Để biết được, đang có những card âm thanh nào đang kết nối vào raspi, ta chạy lệnh
arecord -l
Trong đó, ta thấy có 2 card, card 0 là card usb audio mà mình đang gắn, card 1 là card của webcam c170 logitech mà bài viết trước mình đã giới thiệu!
Card 0 có 1 subdevice có id là 0. Card 1 cũng có 1 subdevice với id là 0.
Để xác định nơi sẽ phát âm thanh, bạn cần xác định subdevice mà raspi sẽ phát. Vì vậy, để phát nhạc, ta dùng subdevice 0 thuộc card 0, ký hiệu là
hw:0,0
Như vậy, ta chỉ cần chạy lệnh
mpg123 -a hw:0,0 http://download.wavetlan.com/SVV/Media/HTTP/MP3/Helix_Mobile_Producer/HelixMobileProducer_test1_MPEG2_Mono_CBR_40kbps_16000Hz.mp3
... là đã có nhạc rock để nghe!