raspi gửi vào
- 33412 lượt xem
Khi đọc các bài viết về Intel Galileo, mình thấy có bài MJPEG Streamer khá hay. Và qua đây, mình cũng xin chia sẻ cách để chạy MJPEG Streamer trên Raspberry Pi để truyền hình ảnh từ Camera trong mạng LAN.
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é.
Cài đặt các gói cần thiết để build
sudo apt-get install libjpeg8-dev imagemagick libv4l-dev -y
Các bạn chạy đoạn lệnh trên sau khi đã update và upgrade nhé!
Cập nhập thư viện videodev.h
Mặc định Raspberry Pi và Intel Galileo đều không có thư viện videodev.h nữa mà là videodev2.h
Thư viện videodev2.h có thể được dùng như videodev.h vì vậy bạn chạy lệnh sau để tạo shortcut để biên dịch MJPG Streamer
sudo ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h
Download mã nguồn MJPG Streamer
Bạn chạy dòng lệnh sau để tải về
wget http://sourceforge.net/code-snapshots/svn/m/mj/mjpg-streamer/code/mjpg-streamer-code-182.zip
Giải nén MJPG Streamer
Để giải nén MJPG Streamer, các bạn chạy dòng lệnh sau
unzip mjpg-streamer-code-182.zip
Biên dịch MJPG Streamer
MJPG Streamer có rất nhiều plugin đi thèm theo gói hướng dẫn của nó. Nhưng mình thấy không cần thiết phải biên dịch hết. Như trong bài MJPG Streamer của ksp, chúng ta chỉ cần stream camera lên web thôi mà!
cd mjpg-streamer-code-182/mjpg-streamer
make mjpg_streamer input_uvc.so output_http.so
Cài đặt MJPG Streamer để gọi toàn cục
Các bạn chạy các dòng lệnh sau
sudo cp mjpg_streamer /usr/local/bin
sudo cp output_http.so input_uvc.so /usr/local/lib/
sudo cp -R www /usr/local/www
Streaming
Bạn hãy ghi lại dòng lệnh sau cho mỗi lần chạy webcam
LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -quality 100 -f 30 -r 640x480" -o "/usr/local/lib/output_http.so -w /usr/local/www -p 8080"
Các thông số
-d <device name - chuỗi - mặc định /dev/video0>
-quality <chất lượng - số nguyên từ 1 - 100 - mặc định 75>
-f <frame per second - số nguyên từ 1 - 60 - mặc định 10>
-r <kích thước khung hình - chuỗi (xem hướng dẫn ở dưới)>
-p <port - số nguyên - từ 1 => 216 - 1>
Nếu màn hình stream là đen thui?
Lúc này, camera của bạn không hỗ trợ MJPEG, lúc đó, bạn phải mua một camera MJPEG như các dòng của hãng logitech (loại nào của hãng này cũng có hết).
Để kiểm tra camera có MJPEG hay không, bạn theo hướng dẫn sau:
v4l2-ctl --list-formats --device /dev/video0 | grep MJPEG
Chú thích
--device <device name - chuỗi - mặc định là /dev/video0
Nếu kết quả hiện ra là thì camera của bạn đã hỗ trợ mjpeg
Name : MJPEG
Trong trường hợp bạn không có camera có hỗ trợ MJPEG thì cũng không sao, chỉ việc thêm tham số -y vào trong tham số input như sau.
LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -quality 100 -f 30 -r 640x480 -y" -o "/usr/local/lib/output_http.so -w /usr/local/www -p 8080