2016-01-23 81 views
1

我正在製作一個應用程序,該應用程序可以在服務器上傳視頻,並且我需要重新運行上傳過程,如果用戶關閉應用程序並稍後再打開它。iOS Swift 2 - 獲取相機膠捲中的視頻路徑

後一個用戶點擊一個視頻,這個功能被觸發

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
    let mediaType = info[UIImagePickerControllerMediaType] as! NSString 

    if mediaType == kUTTypeMovie { 
     let fileUrl = info[UIImagePickerControllerMediaURL] as! NSURL 

     // ... 
    } 

    self.performSegueWithIdentifier("someSegue", sender: self) 

} 

但我發現fileUrl指出了一些臨時參照原始視頻,並且即使視頻是一樣的總是不同的。

那麼我怎樣才能獲得視頻的真實路徑,我可以保存到NSUserDefaults,所以當用戶再次打開應用時,我可以再次訪問視頻。

+0

您使用什麼組件上傳視頻? NSUrlSession? – Ludovic

回答

0

UIImagePicker會一直壓縮一個視頻並傳遞給您info[UIImagePickerControllerMediaURL]中給出的臨時文件的NSURL - 無論您是否使用該臨時文件,都有責任刪除該臨時文件。

如果要使用壓縮版本,請將其移至文檔文件夾並將路徑保存到NSUserDefaults中。

如果您想要原始視頻,請在info[UIImagePickerControllerReferenceURL]中獲取NSURL。這是原始ALAsset的網址。然後,您需要使用PHImageManager().requestImageDataForAssetPHImageManager().requestExportSessionForVideo獲取要上傳的數據。

+0

是否必須刪除info [UIImagePickerControllerMediaURL]上的視頻?因爲如果我保存該URL,應用程序關閉並再次打開後無法訪問該URL,因此它似乎喜歡將其從tmp文件夾中刪除。 – Stevik

+0

保存URL可能是一個不同的問題。自iOS8以來,每次運行都會得到與您的應用程序不同的絕對路徑。因此,保存相對URL(我只保存文件的名稱,因爲我知道哪個文件夾保存了所有內容),然後在需要打開文件時重新構建一個新的絕對URL。 但是,如果文件對您很重要,請將它從tmp文件夾中移出。當設備存儲空間不足時,iOS會在不告訴您的情況下刪除tmp和緩存。聽起來就像當你完成文件並完成上傳時,你可以刪除它。 –

相關問題