Frage

Ich versuche, einen MJPEG Betrachter in Objective C zu machen, aber ich bin ein paar Probleme mit ihm haben.

Zunächst einmal, ich bin mit AsyncSocket ( http://code.google.com/p / cocoaasyncsocket / ), die lässt mich mit dem Host verbinden.

Hier ist, was ich so weit

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);
}

dann im didConnectToHost Methode:

 - (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
}

}

Dies ruft den MJPEG-Stream, aber es nennt es nicht mehr Daten zu erhalten. Was ich denke, sein Laden zu tun ist nur der erste Teil der Daten, dann trennen.

Bin ich diese völlig falsch zu machen oder gibt es am Ende des Tunnels Licht?

Danke!

War es hilfreich?

Lösung

Versuchen Sie, die MJPEG in einem UIWebview Laden, soll es in der Lage sein, es nativ zu spielen.

Angenommen, Sie haben eine UIWebview "myWebView" genannt, so etwas wie das funktionieren soll:

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

Ich hoffe, das hilft!

Andere Tipps

Das Hauptproblem besteht darin, dass Webkit nie die Daten freigeben, so dass nach einer Weile ist es explodiert.

Das wäre wahrscheinlich am besten mit JavaScript gemacht werden, da es kein guter Weg ist sonst mit UIWebView zu kommunizieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top