2009-01-07 12 views
10

Bir IP kameradan canlı M-JPEG video almak için bir Java istemci uygulaması yazıyorum. Video kamera tarafından her parçanın tek bir JPEG çerçevesi olduğu sonsuz çok parçalı bir HTTP mesajı olarak gönderilir. Bu çerçevelerin her birini geldikçe işlemem gerekiyor, bu yüzden her mesajın/video karesinin alındığı sırada bir olayı eşzamansız olarak tetikleyen bir HTTP isteğinin yapılmasının bir yolu olduğunu umuyorum.Java: Çok kanallı bir HTTP yanıtı alın

Bunu yapabilecek kütüphanelerin farkında olan var mı? Google’da bulabildiğim tüm örnekler, yanıtı yalnızca ayrıştırmayı engelleyen ve tüm yanıt alındıktan sonra parçalara ayıran engelleme çağrıları kullandığı için işe yaramayacaktır (ki bu açıkça sonsuz bir yanıt için işe yaramayacaktır).

Mesaj sınırını arayarak verileri el ile parçalara ayırabilirim, ancak tekerleği yeniden icat edeceğimi hissederim.

cevap

1

HttpClient'i Apache Commons'dan deneyin. Kaynak kodunda, akış biçiminde çok parçalı olarak nasıl okunacağını gösteren bir çift sınıf vardır. http://fmj-sf.net/doc/fmj/net/sf/fmj/media/parser/MultipartMixedReplaceParser.html

ile google kodunu aranıyor: yanıtları-karışık yerine x http://fmj-sf.net, çok parçalı/ayrıştırmak için bir sınıf var mı:

+0

Bu kitaplığın belgelerine baktım ve yalnızca yanıtların değil, çok parçalı HTTP isteklerinin ayrıştırılması gibi görünüyor. Bu konuya göre multipart yanıtlarını ayrıştırmak için kullanılamaz: http://markmail.org/message/l6t46xzmikkbxo2e. Bağlantıda bahsettikleri Mime4j'ye bakıyorum. – user52386

4
+0

Teşekkürler - Cambozola tam olarak yapmaya çalıştığım şey gibi görünüyor, ben biraz daha kodlarına bakacağım. Tüm standart HTTP olduğu için özel bir kod yerine düzgün bir HTTP kütüphanesi kullanmayı umuyordum ama yapmak istediklerimden çok fazla bir şey yok gibi görünüyor. – user52386

+0

HTTP push sadece web kamerası ve bazı denemelerde kullanılır. Kod da o kadar karmaşık değil. Sadece bağlantı hatalarının doğru bir şekilde ele alındığından emin olun ve tüm bilgilerin doğru bir şekilde ulaşacağını varsaymayın. Herhangi bir tarayıcı API'sı da doğru şekilde işlemelidir. – Loki

0

Bir Eye-Fi kartından fotoğraf yüklemeleri almak için java 6 ile birlikte gelen com.sun.net.httpserver sınıflarını kullanan bir HTTP sunucum olan Sceye-Fi projem için çok parçalı istekleri işleyen yazılı sınıflarım var. Teoride, hiçbir şey sonsuz bir çok parçalı talep üzerinde çalışmasını engellemelidir. Umarım yardımcı olacaktır.