3

我正在尝试在 MAC OS X 上实现一个服务器,为 iOS 设备流式传输视频。

在服务器端,我使用 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

1 回答 1

4

我通过像这样覆盖 HTTPFileResponse 的 httpHeaders 解决了这个问题:

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

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

发生这种情况是因为 HTTPFileResponse 返回没有扩展名的视频。并且 MPMoviePlayerController 无法读取没有扩展名的视频。

于 2013-07-12T06:16:07.090 回答