2012-04-29 83 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發揮

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

[self presentMoviePlayerViewControllerAnimated:(MPMoviePlayerViewController *)playerController]; 

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

在這一點上,電影播放器​​顯示,然後立即揣曾經的「秀」動畫完成。在日誌中我得到這個:

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> 

我不知道下一步該去哪裏.. 有幫助嗎?

**編輯**

我想打從this buckbunny test clip來的MP4。當我直接在表單中加載剪輯時,它的作用就是URL。但是,如果我下載並通過NSData保存並嘗試重新打開NSData,則不再有效。

**編輯2 **

@Till: 「你是用初始化字符串是garbledegock一個URL; // [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

您正在初始化一個帶有garbledegock字符串的URL; //'str = @「@¼'äsîy1ehÿÜp」' 'path = [NSURL fileURLWithPath:str];' 你在這裏期待什麼? – Till

+0

@Till我添加了'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

這是我做的存儲它。 5MB文件僅作爲1KB片中的一個存儲,因爲我做錯了。什麼是我說得對,你的加載方法工作正常。 – Jacksonkr

0

我認爲這是因爲您在播放時將其設置爲nil。實際上,它看起來發生得很快,因此MPMoviePlayerViewController仍然在加載材料時將其設置爲nil