Question

Je suis en train de faire un spectateur MJPEG en Objective C, mais je vais avoir un tas de problèmes avec elle.

Tout d'abord, j'utilise AsyncSocket ( http://code.google.com/p / cocoaasyncsocket / ) qui me permet de vous connecter à l'hôte.

Voici ce que je suis arrivé à ce jour

NSLog(@"Ready");
asyncSocket = [[AsyncSocket alloc] initWithDelegate:self];
//http://kamera5.vfp.slu.se/axis-cgi/mjpg/video.cgi
NSError *err = nil;
if(![asyncSocket connectToHost:@"kamera5.vfp.slu.se" onPort:80 error:&err])
{
    NSLog(@"Error: %@", err);
}

puis dans le procédé didConnectToHost:

 - (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port{
NSLog(@"Accepted client %@:%hu", host, port);


NSString *urlString = [NSString stringWithFormat:@"http://kamera5.vfp.slu.se/axis-cgi/mjpg/video.cgi"];
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"GET"];

    //set headers
NSString *_host = [NSString stringWithFormat:host];
[request addValue:_host forHTTPHeaderField: @"Host"];

NSString *KeepAlive = [NSString stringWithFormat:@"300"];
[request addValue:KeepAlive forHTTPHeaderField: @"Keep-Alive"];

NSString *connection = [NSString stringWithFormat:@"keep-alive"];
[request addValue:connection forHTTPHeaderField: @"Connection"];


//get response
NSHTTPURLResponse* urlResponse = nil;  
NSError *error = [[NSError alloc] init];  
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error]; 

NSString *result = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

NSLog(@"Response Code: %d", [urlResponse statusCode]);
if ([urlResponse statusCode] >= 200 && [urlResponse statusCode] < 300) {
    NSLog(@"Response: %@", result);
            //here you get the response
}

}

appelle le flux MJPEG, mais il ne l'appelle pas pour obtenir plus de données. Ce que je pense que son fait est juste de charger le premier bloc de données, puis de déconnecter.

Est-ce que je fais cela tout à fait tort ou est-il la lumière au bout de ce tunnel?

Merci!

Était-ce utile?

La solution

Essayez de charger le MJPEG dans un UIWebView, il devrait être en mesure de jouer en mode natif.

En supposant que vous avez un UIWebView appelé "myWebView", quelque chose comme cela devrait fonctionner:

NSURLRequest* urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://kamera5.vfp.slu.se/axis-cgi/mjpg/video.cgi"]];
[myWebView loadRequest:urlRequest];

J'espère que cela!

Autres conseils

Le principal problème est que WebKit jamais libérer les données, donc après un certain temps exploser.

Ce serait probablement mieux être fait avec JavaScript car il n'y a pas une bonne façon de communiquer avec UIWebView autrement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top