2009-01-07 48 views
10

Tôi đang viết ứng dụng khách Java để nhận video M-JPEG trực tiếp từ máy ảnh IP. Video được gửi bởi máy ảnh dưới dạng thông điệp HTTP nhiều phần vô tận trong đó mỗi phần là một khung JPEG duy nhất. Tôi cần phải xử lý từng khung hình này khi chúng đến, vì vậy tôi hy vọng có một cách để thực hiện một yêu cầu HTTP kích hoạt không đồng bộ một sự kiện khi nhận được từng khung hình một phần của video.Java: Nhận phản hồi HTTP nhiều phần

Có ai biết về bất kỳ thư viện nào có thể thực hiện việc này không? Tất cả các ví dụ tôi có thể tìm thấy trên Google sẽ không hoạt động vì chúng sử dụng các cuộc gọi chặn chỉ phân tích cú pháp phản hồi và chia thành các phần sau khi toàn bộ phản hồi đã được nhận (điều này rõ ràng sẽ không hoạt động đối với phản hồi vô tận).

Tôi nhận ra rằng tôi có thể chia dữ liệu thành các phần theo cách thủ công bằng cách tìm kiếm ranh giới thư nhưng có vẻ như tôi sẽ phát minh lại bánh xe.

Trả lời

1

Hãy thử HttpClient từ Apache Commons. Mã nguồn có một vài lớp hiển thị cách đọc trong một multipart trong một dòng thời trang.

+0

Tôi đã xem tài liệu cho thư viện này và có vẻ như nó chỉ để phân tích các yêu cầu HTTP nhiều phần, chứ không phải phản hồi. Theo chủ đề này, nó không thể được sử dụng để phân tích cú pháp phản hồi multipart: http://markmail.org/message/l6t46xzmikkbxo2e. Tôi đang nhìn vào Mime4j mà họ đề cập đến trong liên kết. – user52386

4
+0

Cảm ơn- Cambozola có vẻ chính xác những gì tôi đang cố gắng làm, tôi sẽ xem xét thêm một số mã của họ. Tôi đã hy vọng sử dụng một thư viện HTTP thích hợp hơn là mã tùy chỉnh vì nó là tất cả các HTTP tiêu chuẩn nhưng có vẻ như không có sẵn nhiều cho những gì tôi muốn làm. – user52386

+0

Dường như tính năng đẩy HTTP chỉ được sử dụng trong webcam và một số thử nghiệm. Mã này cũng không phức tạp. Tôi sẽ chỉ nói chắc chắn rằng kết nối thất bại được xử lý một cách chính xác và không cho rằng tất cả các thông tin sẽ đến đúng. Bất kỳ api trình duyệt nào cũng nên xử lý chính xác điều đó. – Loki

0

Tôi đã viết các lớp xử lý các yêu cầu nhiều phần cho dự án của tôi Sceye-Fi, một máy chủ HTTP sử dụng các lớp com.sun.net.httpserver đi kèm với java 6, để nhận ảnh tải lên từ thẻ Eye-Fi. Về lý thuyết, không có gì ngăn cản nó hoạt động trên một yêu cầu nhiều phần vô tận. Hy vọng điều đó sẽ hữu ích.

Các vấn đề liên quan