Làm Firmware nguồn mở cho Webcam chất lượng cao - P.1


Dạo này do ở nhà nhiều nên mình hay phải Zoom. Mình đang dùng một máy Dell XPS 13 chạy Ubuntu để làm những việc cá nhân. Vấn đề là máy tính này có một cái webcam rất tệ.
Hình của mình lúc nhà có đủ nắng:
Webcam trên máy XPS 13
Do đó mình nghĩ làm thế nào để chất lượng webcam được tốt hơn. Có mấy cách phổ biến mọi người vẫn làm:
1. Mua cái USB webcam ngoài.
2. Dùng một máy ảnh chuyên nghiệp + HDMI output + capture card (các bạn streamer hay dùng cách này).
3. Dùng máy điện thoại để hội họp.
4. Dùng máy điện thoại để làm webcam với một phần mềm thứ ba.
Nhưng các cách đó đều có hạn chế:
1. Chất lượng không cao hơn nhiều so với built-in webcam. Không chỉnh được tiêu cự.
2. Cồng kềnh.
3. Không dùng được các phần mềm trên máy tính.
4. Lag (tiếng đi theo sau hình).
Mình có thử cách (2), chờ 2 tháng mới thấy cái capture card về nhà. Chất lượng hình từ capture card này tương đối đẹp, nhưng sau này mình nhận ra cách này không ổn vì mình chỉ có chiếc máy ảnh NEX-5R, mà nó gửi ra capture card cả GUI, không có cách nào xóa đi được. Nếu muốn xóa thì phải mua hẳn một cái máy ảnh mới như Sony A7, giá ít nhất là $500.
Sony NEX-5R + Capture card làm webcam
Gần đây mình thấy Raspberry Pi Foundation có đưa ra một module camera có sensor cực to gọi là High-Quality Camera:
Đặc biệt hơn, chiếc sensor này còn có thể lắp lens thoải mái vào được, nếu như biến nó thành webcam thì hay biết mấy!
USB Webcam bằng Raspberry Pi (phiên bản cũ)
Cách dễ dàng để làm việc này là dùng FFmpeg hay Gstreamer để stream từ Raspberry Pi lên mạng rồi dùng máy tính thu lại rồi biến stream này thành virtual webcam. Nhưng như thế có một cái dở là hình sẽ bị lag (do mạng, encoding). Vì vậy cách tốt nhất là Raspberry Pi phải thành USB webcam như bình thường.
Sau khi tìm hiểu một hồi thì mình thấy có người đã làm rồi - là bác Dave Hunt. Ý tưởng của việc này là dùng một chiếc Raspberry Pi 0. Raspberry Pi 0 có một chế độ cho cổng USB On-The-Go rất đặc biệt là USB Gadget (tức là bản thân chiếc Raspberry Pi có thể đóng giả làm một thiết bị USB -- tức là cái webcam). Nhưng giải pháp của Dave Hunt có hai vấn đề:
- Raspberry Pi 0 khởi động rất lâu mà không ai muốn chờ webcam cả phút mới khởi động xong.
- Khi cắt nguồn bất ngờ thì rất có thể cả filesystem sẽ bị hỏng.
Để giải quyết được việc này thì chúng ta sẽ phải mất công đi build Firmware cho chiếc webcam của chúng ta. Trong kỳ sau, chúng ta sẽ cùng tìm hiểu làm cách nào để build một firmware cho chiếc webcam nguồn mở này bằng Buildroot, để giải quyết các vấn đề kể trên.
PS: Trong buổi ViệtBay Sharing X vừa rồi mình đã dùng chiếc open-source webcam này trong vòng nhiều tiếng liền.
51
1463 lượt xem
51
7
7 bình luận