0
0
Lập trình
Admin Team
Admin Teamtechmely

Trực tiếp Streaming tới Amazon IVS với ESP32 và Dữ liệu Cảm biến

Đăng vào 1 tháng trước

• 5 phút đọc

Trực tiếp Streaming tới Amazon IVS với ESP32 và Dữ liệu Cảm biến

Giới thiệu

Trong những năm gần đây, việc phát trực tiếp chất lượng cao từ các thiết bị nhúng như ESP32 đã gặp phải nhiều hạn chế. Những bo mạch ESP32-CAM thường chỉ có khả năng tạo ra các luồng hình ảnh MJPEG chất lượng thấp với tốc độ khung hình (FPS) từ 5 đến 15 tại độ phân giải 320x240. Các vi điều khiển này không đủ CPU và RAM để xử lý video thực sự với các bộ mã hóa hiện đại. Tuy nhiên, sự xuất hiện của bo mạch ESP32-P4-Function-EV-Board từ Espressif đã thay đổi hoàn toàn cục diện. Bo mạch này trang bị bộ xử lý RISC-V dual-core 400MHz, 32MB PSRAM và quan trọng nhất là bộ mã hóa H.264 phần cứng có khả năng phát trực tiếp 1080P@30fps. Điều này thực sự là một bước đột phá, nhưng tất cả phần cứng đó sẽ trở nên vô nghĩa nếu không có thư viện phần mềm để truyền tải các luồng H.264 đã được mã hóa. May mắn thay, Espressif đã phát hành thư viện esp-webrtc-solution để hỗ trợ điều này. Chúng ta hãy cùng tìm hiểu xem liệu nó có thực sự đáng giá không và liệu có thể tích hợp nó với dịch vụ phát trực tiếp Amazon IVS hay không!

⚠️ Lưu ý: Đây là một dự án cá nhân!

📟 Bo mạch ESP32-P4-Function-EV

🛑 Trước khi đi sâu hơn - hãy nhìn xem thiết bị này!

⛔️ Lưu ý: Hãy bỏ qua cảm biến kết nối tạm thời. Chúng ta sẽ quay lại sau!

Bo mạch này thật tuyệt vời! Kích thước của nó làm tôi liên tưởng đến Raspberry Pi - một bước tiến lớn so với những bo mạch ESP32 nhỏ gọn mà chúng ta thường thấy. Dù rằng đôi khi một bo mạch nhỏ hơn lại tốt hơn khi tích hợp vào một dự án lớn cần tính gọn nhẹ, nhưng với sức mạnh mà ESP32-P4 mang lại, nó chắc chắn phải lớn hơn một chút. Bộ kit tôi mua thậm chí còn đi kèm với một màn hình đầy đủ, nhưng hiện tại tôi không sử dụng nó. Một lưu ý nhỏ: tôi rất muốn có một vỏ bọc đẹp cho bộ kit này, nhưng tôi vẫn chưa tìm thấy cái nào phù hợp. Để bạn có cái nhìn tổng quan, dưới đây là thông số kỹ thuật:

  • Bộ xử lý RISC-V dual-core 400MHz với 32MB PSRAM
  • Bộ mã hóa video H.264 phần cứng cho phát trực tiếp theo thời gian thực
  • Video Full HD 1920x1080 với 25fps
  • Giao diện camera MIPI-CSI (bao gồm camera 2MP)
  • Đầu ra màn hình MIPI-DSI (bao gồm màn hình cảm ứng 7" 1024x600)
  • Wi-Fi 6 & Bluetooth 5 LE thông qua module ESP32-C6
  • Cổng Ethernet 10/100 cho kết nối có dây
  • Hai cổng USB 2.0 (Type-A host + Type-C device)
  • Hệ thống âm thanh chuyên nghiệp với codec, microphone và bộ khuếch đại 3W (mang theo loa của bạn)
  • Header GPIO 40 chân cho mở rộng cảm biến/thiết bị ngoại vi
  • Khe cắm thẻ MicroSD cho mở rộng bộ nhớ
  • Gỡ lỗi Serial/JTAG USB tích hợp

Tóm tắt

ESP32-P4-Function-EV không chỉ là một vi điều khiển thông thường - nó là một nền tảng phát triển đa phương tiện hoàn chỉnh với các tính năng video, âm thanh và kết nối chuyên nghiệp mà trước đây yêu cầu nhiều bo mạch và linh kiện riêng biệt trong các thiết lập ESP32 truyền thống. Nếu có một điều tôi phàn nàn, đó là màu sắc video từ camera 2MP SC2336 đi kèm có vẻ hơi thiếu chính xác (xem ảnh chụp màn hình bên dưới). Dù không tệ, nhưng chúng ta đã quen với chất lượng camera cao hơn hiện nay. Tôi có thể sẽ tìm cách nâng cấp camera này trong tương lai.

🤝 Tích hợp với Amazon IVS

Khoảng một tháng trước, tôi và bạn tôi Kiro đã bắt đầu cố gắng kết nối ESP32-P4 với dịch vụ Amazon IVS để phát trực tiếp. Vì dịch vụ này hỗ trợ WHIP ingest, tôi đã bắt đầu với ví dụ mẫu whip_demo. Tuy nhiên, tôi nhanh chóng gặp phải một số vấn đề với thư viện cốt lõi - một trong những vấn đề lớn là nó không hỗ trợ chuyển hướng đúng cách trong quá trình thương lượng SDP. Điều này có nghĩa là khi yêu cầu một SDP cho giai đoạn IVS, mã thông báo người tham gia đã bị loại bỏ khỏi yêu cầu, dẫn đến lỗi 400. Tôi đã làm việc để khắc phục vấn đề này (cùng với một số yêu cầu tính năng khác) và đã gửi một vài PR đã được tích hợp vào thư viện cốt lõi (cảm ơn @TempoTian!).

Chất lượng video

Mặc dù màu sắc có hơi thiếu chính xác, nhưng độ phân giải và độ trễ thì thật tuyệt vời!

🏷️ Hỗ trợ SEI

Khi tôi đã thành công trong việc phát sóng từ bo mạch đến Amazon IVS, bước tiếp theo là khá rõ ràng (ít nhất là với tôi). Đây là một vi điều khiển với 55 chân GPIO có thể lập trình. Nó được thiết kế để đọc cảm biến, tại sao không tìm cách công bố tất cả dữ liệu tiềm năng đó? Và vì các giai đoạn thời gian thực hỗ trợ thông tin bổ sung (SEI), tại sao không thêm tính năng công bố dữ liệu cảm biến (hoặc bất kỳ dữ liệu nào khác) dưới dạng SEI? Điều này yêu cầu một PR khác để thêm một hook vào thư viện cốt lõi nhằm mở rộng các khung video để chúng ta có thể thao tác và chèn các đơn vị NAL SEI. Sau khi hook này được triển khai, Kiro và tôi đã có thể xây dựng một hệ thống công bố SEI. Đây là lý do tại sao hình ảnh của bo mạch ở trên có một cảm biến DHT-11 gắn kèm. Nếu bạn quan tâm đến cách hoạt động của nó, hãy xem tài liệu markdown DHT-11 trong repo (liên kết bên dưới).

🎉 Hãy thử ngay!

Để thử nghiệm, hãy kiểm tra ivs-esp-whip-demo trên GitHub.

Tài liệu trong repo khá đầy đủ và sẽ giúp bạn thiết lập nhanh chóng. Nếu bạn có bất kỳ câu hỏi nào, hãy để lại ở dưới. Đối với các vấn đề khi thiết lập hoặc ý tưởng nâng cấp, hãy ghi lại một vấn đề trên repo!

Chúc bạn phát trực tiếp thành công!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào