5

Я пытаюсь запустить локальный GCDWebServer для работы с файлом M3U8, который я сохранил локально с сервера. Я проанализировал файл и сохранил каждый файл .ts в локальном хранилище. Теперь я пытаюсь обслуживать этот файл через локальный веб-сервер, но я не могу заставить файл играть с помощью MPMoviePlayerController или AVPlayerViewController.Как играть в локальные файлы M3u8 на iOS через GCDWebServer

Вот мой код сервера:

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? Кроме того, работает ли локальный веб-сервер безопасным способом размещения контента?

+0

У вас есть какой-либо успех, чтобы играть в локально сохраненный файл m3u8 и зашифрованные/расшифрованные фрагменты? В настоящее время я работаю над одним потоком, нуждаюсь в некоторых рекомендациях. –

ответ

2

изменить ваш тип содержимого в приложение/vnd.apple.mpegurl, как указано в разделе RFC3,1

1
NSString *somePath = @"path/to/folder/with/your/playlist"; 

GCDWebServer *webServer = [[GCDWebServer alloc] init]; 
[webServer addGETHandlerForBasePath:@"/" directoryPath:somePath indexFilename:nil cacheAge:3600 allowRangeRequests:YES]; 
[webServer start]; 

Edit:

С этим настройка веб-сервера, запрос на адрес сервера вернется список файлов в папке, указанный в directoryPath. Таким образом, ссылка для запуска потока HLS будет выглядеть так: http://server_local_address/playlist.m3u8