Stream video bằng Raspberry Pi

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.

2

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é!

3

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

4

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

 

5

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

6

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

7

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

8

Gắn webcam và kiểm tra

Bạn gắn webcam vào Raspberry Pi và chạy lệnh dmesg để kiểm tra camera đã được gắn hay chưa?

dmesg

Nếu có đoạn như hình này là được, bạn có thể stream được.

Xem device name của webcam của bạn.

ls /dev/video*

Nếu nó ra dạng như hình ví dụ là được

9

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 640×480” -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>

10

Xem video streaming

Từ bây giờ, bạn có thể vào địa chỉ http://<địa chỉ IP của Raspi>:8080 để xem hình ảnh truyền trực tiếp từ camera của bạn rồi đấy.

Để biết được các kích thức khung bình của camera, bạn chạy lệnh sau:

v4l2-ctl –list-formats-ext –device /dev/video0

11

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 heart

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 640×480 -y” -o “/usr/local/lib/output_http.so -w /usr/local/www -p 8080

Post Author: administrator

Leave a Reply

Your email address will not be published. Required fields are marked *