سؤال

وأنا أحاول أن تجعل المشاهد MJPEG في الهدف C ولكن أواجه مجموعة من القضايا معه.

ومن الأول، وأنا أستخدم AsyncSocket ( http://code.google.com/p / cocoaasyncsocket / ) الذي يتيح لي الاتصال بالمضيف.

وهنا ما حصلت عليه حتى الآن

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

وبعد ذلك في طريقة 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
}

و}

وهذا يدعو تيار MJPEG، لكنه لا يدعو ذلك للحصول على المزيد من البيانات. ما أعتقد أن لها به هو مجرد تحميل أول قطعة من البيانات، ثم قطع الاتصال.

وأنا أفعل ذلك خاطئ تماما أو هناك ضوء في نهاية هذا النفق؟

وشكرا!

هل كانت مفيدة؟

المحلول

وحاول تحميل MJPEG في UiWebView، ينبغي أن يكون قادرا على اللعب عليه أصلا.

وبفرض أن لديك يسمى UiWebView "myWebView"، شيء من هذا القبيل يجب أن تعمل:

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

وآمل أن يساعد!

نصائح أخرى

والمشكلة الرئيسية هي أن بكت أبدا الافراج عن البيانات، وذلك بعد فترة من الوقت أن تنفجر.

وهذا ربما الأفضل أن يتم ذلك مع جافا سكريبت حيث لا يوجد وسيلة جيدة للتواصل مع UIWebView خلاف ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top