2013-03-15 29 views
6

Czy każdy może mnie poprowadzić, jak przechowywać lokalnie plik m3u8 z adresu URL, aby grać później w trybie offline. Będzie EXT-X-allow-CACHE mi pomóc w tym matter.`plik m3u8 na iPhone'a - jak go zapisać lokalnie, aby odtworzyć później?

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

mogę przesyłać & luz M3U8 bezpośrednio z adresu URL. Ale nie jest w stanie przechowywać go lokalnie i parsować pliki .ts i grać ... Pls guide.

+0

masz na myśli, że tworzysz aplikację iOS oszczędzającą m3u8? – Raptor

+0

@shivanRaptor: Tak – Daisy

+0

Pokaż nam swoje aktualne kody. Gdzie utknąłeś? – Raptor

Odpowiedz

-2

Krok 1: Pobierz plik & Zapisz

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) 
} 

Krok 2: Zapisz plik

Można też zapisać go jako plik, czy zapisać go jako obiekt.

// 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"]; 

Krok 3: Przeczytaj plik

// 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 

Krok 4: Play go w odtwarzaczu

Powinieneś to zrobić. Nie muszę pisać, tak?

+0

Mogłem zapisać pliki ts, ale nie mogłem ich odtworzyć. Jest w formie zaszyfrowanej. i prawdopodobnie nie otrzymuję klucza odszyfrowywania. W tym celu muszę mieć EXT-X-ALLOW-CACHE = Tak. Pls sugerują, że – Daisy

+0

nie wspomniałeś, że jest odszyfrowany. Aby odszyfrować, musimy wiedzieć, jak szyfrować. – Raptor

+1

@Raptor, czy na pewno można odtwarzać pliki .m3u8, które są przechowywane lokalnie? O ile mogę powiedzieć, odtwarzacz nie obsługuje tego - plik musi być pobrany przez HTTP (tak, wiem, że to głupie). Oto kilka wątków, w których ludzie również to odkryli: 1) http://stackoverflow.com/questions/3199232/mpmovieplayercontroller-and-local-m3u8-files 2) http://stackoverflow.com/questions/15427360/how -to-play-m3u8-or-ts-in-ios –