4

アプリのローカルディレクトリのドキュメントフォルダにビデオファイルを保存しています。作成した埋め込みテーブルビューでユーザーがアイテムをクリックしたときにファイルを再生したい。ビデオを再生するための私のコードは次のとおりです。

NSString* documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString* path = [documentPath stringByAppendingPathComponent:@"DemoRecording.mp4"];
NSURL* movieURL = [NSURL fileURLWithPath: path];
[player.view setFrame: self.view.bounds];
[self.view addSubView: player.view];
[player play];
MPMoviePlayerViewController* moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL: movieURL];
[self presentMoviePlayerViewControllerAnimated: moviePlayer];

ビデオは再生されません。パスは正しく、ファイルはそこに存在します。
私はこれが繰り返しの質問であることを知っています。私はこれらのリンクを参照しました: Cocoa-Touch MPMoviePlayer
を使用してドキュメントディレクトリからダウンロードしたビデオを再生し、アプリドキュメントに保存されたムービーをロードして再生し ますが、決定的な答えは見つかりませんでした。 これを手伝ってください。私はiOS5.1.1を使用していますが、それによって何かが変わる場合は。


編集:

それは機能します。映画館にURLを渡すのを忘れていました。

4

2 に答える 2

19

次のようにドキュメント ディレクトリからビデオを再生できます。

-(IBAction)playVideo
{
    NSURL *vedioURL;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSArray *filePathsArray = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:documentsDirectory  error:nil];
    NSLog(@"files array %@", filePathsArray);        

    NSString *fullpath;

    for ( NSString *apath in filePathsArray )
    {
        fullpath = [documentsDirectory stringByAppendingPathComponent:apath];       
        vedioURL =[NSURL fileURLWithPath:fullpath];
    }
    NSLog(@"vurl %@",vedioURL);
    MPMoviePlayerViewController *videoPlayerView = [[MPMoviePlayerViewController alloc] initWithContentURL:vedioURL];
    [self presentMoviePlayerViewControllerAnimated:videoPlayerView];
    [videoPlayerView.moviePlayer play];     
}

ノート

要求されたフレームワークを含めるか、デリゲートを接続することを忘れないでください。

于 2013-01-09T12:16:19.047 に答える
1

あなたの間違いは、/DemoRecording.mp4 の前に見逃していたことです。

そのはず

NSString* path = [documentPath stringByAppendingPathComponent:@"/DemoRecording.mp4"];

playerまた、宣言する前にステートメントを書いています。

于 2014-03-26T12:54:52.707 に答える