使用 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 流式传输?
使用 Nginx 或 Node 流式传输保存的 HLS 视频