2013-03-15 4 views
6

Может ли кто-нибудь мне навестить, как хранить локальный файл m3u8 с url, для игры в офлайн-режиме позже. Будет ли EXT-X-Allow-CACHE помочь мне в этом matter.`Файл m3u8 для iPhone - как сохранить его локально для воспроизведения позже

NSURLRequest* request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; 
NSURLConnection *connection=[[NSURLConnection alloc]initWithRequest:request delegate:self]; 
NSLog(@"connection %@",connection);` 

Я могу течь & играть m3u8 непосредственно из URL. Но не в состоянии хранить его локально и разбирать файлы .ts и играть ... Pls guide.

+0

Вы имеете в виду, что вы делаете приложение iOS с сохранением m3u8? – Raptor

+0

@shivanRaptor: Да – Daisy

+0

Покажите нам свои действующие коды. Где ты застрял? – Raptor

ответ

-2

Шаг 1: Загрузите файл & сохранить

NSError *err = nil; 
NSString *url = [[NSString stringWithFormat:@"http://www.example.com/playlist.m3u8"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSString *the_file = [NSString stringWithContentsOfURL:[NSURL URLWithString:url] encoding:NSUTF8StringEncoding error:&err]; 
if(err != nil) { 
    // do some error handling, e.g. NSLog(@"Fail: %@", [err localizedDescription]); 
} else { 
    // save the file (see Step 2) 
} 

Шаг 2: Сохраните файл

Вы можете либо сохранить его в файл или сохранить его как объект.

// save as file 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *docDirectory = [paths objectAtIndex:0]; 
NSString *fileName = [NSString stringWithFormat:@"%@/playlist.m3u8", docDirectory]; 
[the_file writeToFile:fileName atomically:NO encoding:NSASCIIStringEncoding error:nil]; 

// OR, save as object 
[[NSUserDefaults standardUserDefaults] setObject:the_file forKey:@"MY_M3U8"]; 

Шаг 3: Прочитайте файл

// read from file 
NSString *textPath = [docDirectory stringByAppendingPathComponent:@"playlist.m3u8"]; 
// the FILE is loaded 


// OR, read from object 
NSString *content = [[NSUserDefaults standardUserDefaults] stringForKey:@"MY_M3U8"]; 
// it will contain the CONTENT of file 

Шаг 4: играть его в проигрывателе

Вы должны были сделать это. Не нужно мне писать, да?

+0

Я могу сохранить файлы ts, но не смог воспроизвести его. Он находится в зашифрованном виде. и, вероятно, я не получаю ключ дешифрования. Для этого мне нужно иметь EXT-X-ALLOW-CACHE = Да. Pls предлагает – Daisy

+0

, вы не упомянули, что он расшифрован. Чтобы расшифровать, мы должны знать, как шифровать. – Raptor

+1

@Raptor, вы уверены, что можете воспроизводить файлы .m3u8, которые хранятся локально? Насколько я могу судить, плеер не поддерживает это - файл нужно загружать через HTTP (да, я знаю, что это глупо). Вот несколько тем, в которых люди также обнаружили это: 1) http://stackoverflow.com/questions/3199232/mpmovieplayercontroller-and-local-m3u8-files 2) http://stackoverflow.com/questions/15427360/how -to-play-m3u8-or-ts-file-in-ios –