【发布时间】:2016-03-08 09:41:59
【问题描述】:
我正在尝试运行本地 GCDWebServer 来提供我从服务器本地存储的 M3U8 文件。我解析了文件并将每个 .ts 文件保存到本地存储。现在我正在尝试通过本地 Web 服务器提供该文件,但我无法使用 MPMoviePlayerController 或 AVPlayerViewController 播放该文件。
这是我的服务器代码:
webServer = [[GCDWebServer alloc] init];
[webServer addDefaultHandlerForMethod:@"GET"
requestClass:[GCDWebServerRequest class]
processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDirectory = [paths objectAtIndex:0];
NSString *textPath = [docDirectory stringByAppendingPathComponent:@"localPlaylist.m3u8"];
return [GCDWebServerDataResponse responseWithData:[NSData dataWithContentsOfFile:textPath] contentType:@".m3u8"];
}];
[webServer startWithPort:8080 bonjourName:nil];
以及我随后尝试播放的代码:
AVPlayerViewController *newPlayer = [[AVPlayerViewController alloc] init];
newPlayer.player = [[AVPlayer alloc]initWithURL:webServer.serverURL];
[self presentViewController:newPlayer animated:YES completion:nil];
我在提供本地 m3u8 文件的方式上是否做错了什么?此外,运行本地 Web 服务器是否是托管内容的安全方式?
【问题讨论】:
-
你有没有成功播放本地保存的 m3u8 文件和加密/解密的块?我目前正在处理相同的流程,需要一些指导。
标签: ios mpmovieplayercontroller avplayer http-live-streaming m3u8