2011-04-18 244 views
2

我有一個通過MPMovieplayer播放視頻剪輯的應用程序。這些剪輯是mp4格式的,一切都很正常。我想拍攝相同的剪輯並將其保存到相冊中。如果我通過iTunes手動將電腦上的視頻同步到手機,這將起作用。它似乎對視頻文件進行轉碼並將其存儲爲.MOV格式。將MP4保存到iPhone相冊

但是,當我嘗試通過代碼在應用程序中保存視頻時,出現視頻格式錯誤。所以我的問題是如何讓我的視頻保存在相冊中?如果這是不可能的MP4我怎麼轉碼(在應用程序).​​MOV?

下面是代碼:

ALAssetsLibrary* library = [[ALAssetsLibrary alloc]init]; 

    if ([library videoAtPathIsCompatibleWithSavedPhotosAlbum:moviePlayerController.contentURL]) 
    { 

     NSURL *clipURl = moviePlayerController.contentURL; 
     [library writeVideoAtPathToSavedPhotosAlbum:clipURl completionBlock:^(NSURL *assetURL, NSError *error) 
     { 
      if (error) 
       [ErrorAlertView showError:error]; 
      else [ErrorAlertView showErrorTitle:@"Success" message:@"Your video clip is saved"]; 
     }]; 
    } 
    [library release]; 
+0

我知道這不是正確的方式,但有時媒體播放器並不關心擴展,只要它是一個「支持」的擴展。實際的解碼/解複用通常發生在內部,而不是與文件擴展相關。因此,我大膽的建議:試着簡單地將.mp4重命名爲.mov - 錯誤,但可能是一種解決方法。 – Till 2011-04-18 20:09:03

回答

2

是您的contentURL文件路徑URL或網頁網址?對於writeVideoAtPathToSavedPhotosAlbum方法,在我的測試,你確實需要創建(例如)的文件路徑URL這樣:

NSString *pathString = [[NSBundle mainBundle] pathForResource:@"filename" ofType:@"mp4"]; 
NSString *pathURL = [NSURL fileURLWithPath:pathString isDirectory:NO]; 

這意味着你需要首先從網上下載的電影,如果您使用的是網址。我建議使用ASIHTTPRequest,使用setDownloadDestinationPath:方法來設置下載目錄。

一般而言,如果mp4文件適合右側(視網膜,非視網膜,iPad)設備(see my tests of supported video files here)的正確分辨率,則該文件可以正常工作。

如果視頻仍然給務必確保文件路徑URL是否正確後videoAtPathIsCompatibleWithSavedPhotosAlbum:一個沒有反應,那麼你就需要使用AVAssetExportSession(與AVAssetExportPresetLowQualityAVAssetExportPresetMediumQuality,或AVAssetExportPresetHighestQuality)來得到一個適合設備的文件你可以保存到相冊。

相關問題