J'ai un fichier image stocké sur un serveur distant (ie http://example.com/images).The images dans ce dossier sont de mise à jour à raison de 1 image par 100 millisecondes Pensez à cames IP qui transmettent des images MJPEG.Impossible de faire E/S rapide des images générées dynamiquement sur une caméra IP
J'utilise api client apache HTTP pour se connecter à mon serveur distant .Je reçois un flux de contenu
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://example.com/images/screenshot.jpg");
HttpResponse response = httpClient.execute(httpget);
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
J'enveloppait l'entrée stream dans BufferedInputSt ream pour des E/S plus rapides. Mais puisque les images sont générées à un rythme très rapide et qu'elles ont une taille moyenne de 250kb. Je voudrais utiliser les fonctionnalités NIO comme FileChannel ainsi que MemoryMappedBuffers à améliorer les performances d'E/S ainsi que les fichiers d'images générés par accès sur le serveur distant en mode non bloquant.
Mais quels que soient les exemples que j'ai vus parler de la création de FileInputStream/RandomAccessFiles qui prennent File Object comme paramètre.
Je reçois l'InputStream comme réponse du serveur distant que je ne peux pas convertir en FileInputStream pour obtenir FileChannel.
Je voudrais savoir s'il existe une implémentation dans api client apache qui donne des chemins de fichiers. Ou devrais-je explorer les sockets pour obtenir l'accès au canal. J'ai également javax.imageIO, mais je ne sais pas si cela répondra à mon besoin d'E/S plus rapides
1) Quelle est la bande passante entre votre serveur et votre client? 2) Pouvez-vous démarrer les transferts depuis le serveur distant (via ftp, dir mapping, peu importe)? –
la bande passante serait d'environ 1 mbps, je ne peux utiliser que http. Même si le protocole FTP est pris en charge par ma caméra ip, mais il télécharge des images sur le serveur FTP à un intervalle de 60 secondes. Et je ne peux pas contrôler le taux de téléchargement. En fait, mon ip cam a intégré linux et serveur web dessus et transmet le flux h264 ainsi que les images mjpeg. Je suis capable de télécharger les images vers un dossier spécifié sur ma boîte de dev, mais le processus est très lent. Dans mon expérience précédente, j'ai observé que le fichier E/S fait en utilisant FileChannels considérablement accélérer les performances –