首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS 從沙盒文檔目錄播放視頻的正確姿勢

     編輯:程式設計綜合問答

問題現象

嘗試使用 NSString stringWithContentsOfFile 讀取視頻文件路徑並傳給 MPMoviePlayerViewController,結果 contentPath 始終為 null,導致播放失敗。

錯誤原因

stringWithContentsOfFile 用於讀取文本文件內容(如 JSON、HTML),而非獲取文件路徑。視頻文件(.mov, .mp4)是二進制數據,無法以文本編碼讀取。正確做法是直接使用文件路徑構建 NSURL。

正確實現

- (void)playVideo {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths firstObject];
    NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"video2.MOV"];
    NSURL *fileURL = [NSURL fileURLWithPath:filePath]; // 關鍵:使用 fileURLWithPath
    
    MPMoviePlayerViewController *playerVC = [[MPMoviePlayerViewController alloc] initWithContentURL:fileURL];
    [self presentMoviePlayerViewControllerAnimated:playerVC];
    [playerVC.moviePlayer play];
}

補充:Bundle 內視頻播放

若視頻打包在應用內(非沙盒),請使用:

NSString *path = [[NSBundle mainBundle] pathForResource:@"video2" ofType:@"mov"];
NSURL *url = [NSURL fileURLWithPath:path];

最佳實踐

  • 優先使用 AVPlayerViewController(iOS 8+)替代已棄用的 MPMoviePlayerViewController。
  • 播放前檢查文件是否存在:[[NSFileManager defaultManager] fileExistsAtPath:filePath]。
  • 處理中斷、後台播放等生命周期事件。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved