2012-04-29 5 views
0
NSString *p = [app getFilePathFor:name]; 
// Printing description of p: 
// /Users/Jackson/Library/Application Support/iPhone Simulator/5.0/Applications/7FE97EDD-D080-4E5E-8EDD-3D9FFA8F6CF5/Documents/6681a4d7-8630-4a12-90c6-f95d72650a42 

NSData *data = [NSData dataWithContentsOfFile:p]; 
// Printing description of data: 
// <01401dc2 a15ebc27 e473ee79 316568ff 19dc7000 df3f7c5c dc206870 01a1c00e 00010000 00000000 00e10288 00000003 01060020 08c80038 00080000 88edffbf 02000119 0000050e 00000000 00000000 02000007 0000050f 00000000 00000000> 

NSString *str = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; 
// Printing description of str: 
// @¡^¼'äsîy1ehÿÜp 

path = [NSURL fileURLWithPath:str]; 
// Printing description of path: 
// %[email protected]%1D%C3%82%C2%A1%5E%C2%BC'%C3%A4s%C3%AEy1eh%C3%BF%19%C3%9Cp%00%C3%9F%3F%7C%5C%C3%9C%20hp%01%C2%A1%C3%80%0E%00%01%00%00%00%00%00%00%00%C3%A1%02%C2%88%00%00%00%03%01%06%00%20%08%C3%88%008%00%08%00%00%C2%88%C3%AD%C3%BF%C2%BF%02%00%01%19%00%00%05%0E%00%00%00%00%00%00%00%00%02%00%00%07%00%00%05%0F%00%00%00%00%00%00%00%00 -- file://localhost/ 

Затем я посылаю путь к MPMoviePlayerViewController так:MPMoviePlayerViewController игра от NSData (MP4)

MPMoviePlayerViewController * playerController = [[MPMoviePlayerViewController alloc] initWithContentURL:path]; 

[self presentMoviePlayerViewControllerAnimated:(MPMoviePlayerViewController *)playerController]; 

playerController.moviePlayer.movieSourceType = MPMovieSourceTypeFile; 
[playerController.moviePlayer play]; 
playerController=nil; 

На данный момент, Movie Player показывает, то немедленная шкура когда-то «шоу» анимация полный. В журнале я получаю это:

An instance 0x87ca7b0 of class AVPlayerItem was deallocated while key value observers were still registered with it. Observation info was leaked, and may even become mistakenly attached to some other object. Set a breakpoint on NSKVODeallocateBreak to stop here in the debugger. Here's the current observation info: 
<NSKeyValueObservationInfo 0x87dfc30> (
<NSKeyValueObservance 0x933c280: Observer: 0x93367d0, Key path: nonForcedSubtitleDisplayEnabled, Options: <New: YES, Old: NO, Prior: NO> Context: 0x0, Property: 0x933c630> 
<NSKeyValueObservance 0x933c360: Observer: 0x93356b0, Key path: presentationSize, Options: <New: NO, Old: NO, Prior: NO> Context: 0x0, Property: 0x87b53b0> 

Я понятия не имею, куда идти дальше .. помощь?

** EDIT **

MP4-я пытаюсь играть исходит из this buckbunny test clip. Когда я загружаю клип прямо в форме URL-адреса, он работает. Но если я загружу его и сохраню через NSData и попытаюсь открыть NSData, это больше не работает.

** EDIT 2 **

@Till: "Вы инициализации URL со строкой, которая является garbledegock; // [email protected]"@¡^¼'äsîy1ehÿÜp" path = [NSURL fileURLWithPath:str]; Что вы ожидаете здесь"

Так что теперь я пробовал:

path = [NSURL fileURLWithPath:[app getFilePathFor:name]]; 
// Printing description of path: 
// file://localhost/Users/Jackson/Library/Application%20Support/iPhone%20Simulator/5.0/Applications/CB1CA8D0-B5EC-4B5F-8C7F-0EF449508BA7/Documents/9d425856-14b0-4ad3-835a-970affacb05f 

Я все еще получаю ТОЧНО такую ​​же ошибку.

+0

Вы инициализируете URL со строкой, которая является garbledegock; // 'str = @" @ ¡^¼'äsîy1ehÿÜp "' 'path = [NSURL fileURLWithPath: str];' Что вы ожидаете отсюда? – Till

+0

@ После добавления «EDIT 2» в ваш комментарий, и я все еще застрял. – Jacksonkr

+0

Вы попытались удалить код, в котором вы отпустите указатель игрока? playerController = nil; ? – Lefteris

ответ

4

Почему вы конвертируете в nsdata из файла сохраненного клипа?

Вы должны просто загрузить путь к клипу в каталоге документов приложения.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:name]; 

NSURL *fileURL = [NSURL fileURLWithPath:filePath isDirectory:NO]; 

yourMoviePlayer = [[MPMoviePlayerController alloc] initWithContentURL: fileURL]; 
+0

Наконец-то я получил правильное имя файла с вашим методом, но я все равно получаю эту ту же самую хромую ошибку. Может ли это иметь какое-то отношение к тому, как я храню? – Jacksonkr

+0

Это было так, что я его хранил. Файл 5 Мбайт хранился только как один из 1KB-фрагментов, потому что я делал это неправильно. Что я понял, ваш метод загрузки работал нормально. – Jacksonkr

0

Я думаю, что это связано с тем, что вы устанавливаете его на nil во время игры. На самом деле, похоже, что это происходит так быстро, что MPMoviePlayerViewController по-прежнему загружает материал, когда вы устанавливаете его на nil.

Смежные вопросы