Một dự án mã nguồn mở mới đã chứng minh cách các nhà phát triển có thể phát trực tiếp video webcam với khả năng computer vision trực tiếp đến trình duyệt web. Dự án gocv-to-webrtc kết hợp GoCV để chụp camera, FFmpeg để mã hóa video, và Pion WebRTC để truyền tải media thời gian thực, tạo ra nền tảng cho các ứng dụng computer vision dựa trên trình duyệt.
Dự án này giải quyết một thách thức phổ biến trong phát triển computer vision: làm thế nào để làm cho kết quả xử lý dễ dàng truy cập mà không yêu cầu người dùng cài đặt phần mềm chuyên dụng. Bằng cách tận dụng công nghệ WebRTC , các nhà phát triển có thể chạy các thuật toán computer vision phức tạp trên các máy chủ mạnh mẽ trong khi cung cấp kết quả thông qua giao diện web đơn giản.
Các Thành Phần Kiến Trúc Kỹ Thuật
- Lớp Capture: Truy cập webcam qua GoCV
- Lớp Encoding: Xử lý VP8 của FFmpeg thông qua stdin/stdout pipes
- Lớp Transport: Pion WebRTC với TrackLocalStaticSample
- Lớp Client: HTML5 RTCPeerConnection với STUN servers
Sự quan tâm của cộng đồng đối với tích hợp Object Detection
Thảo luận giữa các nhà phát triển cho thấy sự quan tâm mạnh mẽ trong việc mở rộng chức năng streaming cơ bản với các tính năng computer vision. Một số thành viên cộng đồng đang khám phá các cách để thêm khả năng phát hiện đối tượng và overlay trước khi truyền video streams đến trình duyệt. Cách tiếp cận này sẽ cho phép các ứng dụng như nhận dạng cử chỉ thời gian thực, phát hiện khuôn mặt, hoặc hệ thống giám sát tự động mà người dùng có thể truy cập thông qua bất kỳ trình duyệt web nào.
Thiết kế modular cho phép các nhà phát triển chèn xử lý computer vision giữa các giai đoạn chụp camera và mã hóa. Tính linh hoạt này có nghĩa là các nhóm có thể thử nghiệm với các thuật toán phát hiện khác nhau trong khi duy trì cùng một cơ sở hạ tầng streaming.
Các phương pháp triển khai thay thế
Cộng đồng đã xác định nhiều cách để xây dựng các hệ thống tương tự ngoài phương pháp pipeline FFmpeg . Các nhà phát triển có thể lựa chọn từ tích hợp thư viện FFmpeg trực tiếp, framework GStreamer , hoặc mã hóa libvpx tùy thuộc vào yêu cầu cụ thể và stack công nghệ hiện có của họ.
Thật tuyệt vời khi bạn có thể có một máy chủ mạnh mẽ thực hiện tất cả những công việc computer vision thú vị này, nhưng sau đó chỉ cần một client đơn giản chỉ thực hiện WebRTC .
Sự tách biệt kiến trúc này tỏ ra đặc biệt có giá trị cho các tác vụ computer vision tốn nhiều tài nguyên mà có thể làm quá tải các thiết bị client. Điện thoại di động và máy tính bảng có thể hiển thị các video streams đã được xử lý mà không cần xử lý tải tính toán của phân tích hình ảnh.
Cấu hình Video Mặc định
- Độ phân giải: 640x480 pixel
- Tốc độ khung hình: 30 fps
- Mã hóa: codec VP8 trong định dạng IVF
- Bitrate: 1 Mbps
- Định dạng màu: BGR24 (đầu vào thô)
Pipeline kỹ thuật và các cân nhắc về hiệu suất
Hệ thống hoạt động bằng cách chụp các khung hình BGR thô từ webcam thông qua GoCV , sau đó chuyển dữ liệu này đến FFmpeg để mã hóa VP8 ở định dạng IVF . Các khung hình đã mã hóa di chuyển thông qua các kết nối WebRTC đến các client trình duyệt, nơi các phần tử video HTML5 tiêu chuẩn hiển thị kết quả.
Các tùy chọn điều chỉnh hiệu suất bao gồm điều chỉnh cài đặt độ phân giải, tốc độ khung hình, và bitrate mã hóa dựa trên băng thông có sẵn và sức mạnh xử lý. Cấu hình mặc định stream video 640x480 ở 30 khung hình mỗi giây với mã hóa 1 megabit, nhưng các nhà phát triển có thể sửa đổi các tham số này cho các trường hợp sử dụng cụ thể của họ.
Dự án đại diện cho xu hướng ngày càng tăng hướng tới việc làm cho computer vision dễ tiếp cận hơn thông qua các công nghệ web. Khi hỗ trợ WebRTC tiếp tục mở rộng trên các thiết bị và trình duyệt, các phương pháp streaming như vậy có thể trở thành tiêu chuẩn để triển khai các ứng dụng dựa trên vision cho người dùng cuối.
Tham khảo: gocv-to-webrtc