使用 CocoaHTTPServer 流式传输视频

Posted

技术标签:

【中文标题】使用 CocoaHTTPServer 流式传输视频【英文标题】:Stream video with CocoaHTTPServer 【发布时间】:2013-07-11 14:08:54 【问题描述】:

我正在尝试在 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"

【问题讨论】:

【参考方案1】:

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

- (NSDictionary *)httpHeaders

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

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

这是因为 HTTPFileResponse 返回没有扩展名的视频。并且 MPMoviePlayerController 不能在没有扩展的情况下读取视频。

【讨论】:

我也面临播放视频的问题。我的实现适用于低于 iOS7 的版本但在 iOS7 上失败。 Error="Network lost"有什么建议吗? @JimiMerply 您好 Jimi,您有使用 CocoaHttpServer 流式传输视频的有效源代码吗?我需要一些工作实施。谢谢。 @Almas Adilbek 使用 CocoaHttpServer 实现视频流非常简单。您应该只使用 HTTPFileResponse 并覆盖我的回答中的 httpHeaders 方法。其余的请看 CocoaHttpServer 示例。 @JimiMerply 现在,实际上我正在尝试这样做。如果您有时间和源代码,很高兴看到您的实现。这么说是因为时间有限。谢谢。

以上是关于使用 CocoaHTTPServer 流式传输视频的主要内容,如果未能解决你的问题,请参考以下文章

视频文件不使用 MPMoviePlayerController 流式传输?

如何使用 html 5 视频元素流式传输视频

如何使用 MPEG-DASH 流式传输实时视频? [关闭]

使用 Nginx 或 Node 流式传输保存的 HLS 视频

如何使用 Play Framework 和 videojs 流式传输视频?

如何将视频数据流式传输到视频元素?