3

Я пытаюсь реализовать сервер на MAC OS X, который передает видео для устройств iOS.Потоковое видео с CocoaHTTPServer

На стороне сервера я использую CocoaHTTPServer для возврата видео в формате .mp4.

- (HTTPFileResponse*)video:(NSString*)pPath 
    {  
     BOOL    fileExists = [[NSFileManager defaultManager] fileExistsAtPath:pPath]; 
     HTTPFileResponse *fileResponse = nil; 

     if (fileExists && [self isVideo:pPath]) 
     { 
      fileResponse = [[HTTPFileResponse alloc] initWithFilePath:pPath forConnection:self]; 
     } 

     return fileResponse; 
    } 

На стороне клиента я использую MPMoviePlayerController для чтения видео.

Когда я пытаюсь читать видео, я получаю эту ошибку:

MPMovieFinishReasonPlaybackError.error : Error Domain=MediaPlayerErrorDomain Code=-11828 "Cannot Open" UserInfo=0xb92ca80 {NSLocalizedDescription=Cannot Open}" 

ответ

4

Я установил эту проблему, перекрывая httpHeaders из HTTPFileResponse так:

- (NSDictionary *)httpHeaders 
{ 
    NSString *key = @"Content-Disposition"; 
    NSString *value = [NSString stringWithFormat:@"attachment; filename=\"%@\"", [filePath lastPathComponent]]; 

    return [NSDictionary dictionaryWithObjectsAndKeys:value, key, nil]; 
} 

Это происходит потому, что HTTPFileResponse вернуться видео без расширение. MPMoviePlayerController не может читать видео без расширения.

+0

Я также сталкиваюсь с проблемой с воспроизведением видео. Моя реализация хорошо работает с версией iOS7, но не работает на iOS7. Ошибка = «Сеть потеряна» Любое предложение? –

+0

@JimiMerply Привет, Jimi, у вас есть рабочий исходный код для потокового видео с помощью CocoaHttpServer? Мне нужна некоторая работающая реализация. Спасибо. –

+0

@Almas Adilbek Для реализации потоковой передачи видео с CocoaHttpServer довольно просто. Вы должны просто использовать HTTPFileResponse и переопределить метод httpHeaders, как в моем ответе. Для остальных посмотрите образцы CocoaHttpServer. – JimiMerply