1

私はこの問題を数日間実行しています。カメラ ロールからビデオを選択し、アプリで直接再生する必要があります。私が知りたいのは単純です:それは可能ですか?以下の私のコードは、カメラロールから選択した後にビデオを再生しないため、再生する前にビデオをローカルに保存する必要があるとは思えません。

私の関連コードは以下の通りです:

//...
if (CFStringCompare((CFStringRef)mediaType, kUTTypeMovie, 0)==kCFCompareEqualTo) {
    NSString *moviePath=[[info objectForKey:UIImagePickerControllerMediaURL]path];
    NSURL *movieURL=[NSURL URLWithString:moviePath];
    self.mpController=[[MPMoviePlayerController alloc]initWithContentURL:movieURL];

    NSLog(@"%@",moviePath);
    [[NSNotificationCenter defaultCenter]addObserver:self
                                            selector:@selector(moviePlayBackDidFinish:)
                                                name:MPMoviePlayerPlaybackDidFinishNotification
                                              object:self.mpController];

    self.mpController.movieSourceType=MPMovieSourceTypeStreaming;
    self.mpController.controlStyle=MPMediaTypeMusicVideo;
    [self.mpController prepareToPlay];
    [self.mpController.view setFrame:self.view.bounds];
    [self.mpController setFullscreen:YES animated:YES];
    [self.view addSubview:self.mpController.view];
    [self.mpController play];


}
[[picker presentingViewController] dismissViewControllerAnimated:YES completion:NULL];

//...

-(void)moviePlayBackDidFinish:(NSNotification*)notification{
    NSLog(@"moviePlayBAckDidFinish");
    MPMoviePlayerController *player = [notification object];
    [[NSNotificationCenter defaultCenter]
     removeObserver:self
     name:MPMoviePlayerPlaybackDidFinishNotification
     object:player];

    if ([player
         respondsToSelector:@selector(setFullscreen:animated:)])
    {
        player.fullscreen=NO;
        [player.view removeFromSuperview];
    }
}

PSmoviePlayBackDidFinish :ビデオの圧縮後に通知ハンドラが常に呼び出され、空白の画面が表示されます。また、moviePath変数をログに記録すると、次のようなパスが得られました。

/private/var/mobile/Applications/5912AED1-S1DE-25EF-A8B-EF7AD21E3R65/tmp//trim.‌​uUcGJU.MOV

私が言ったように、カメラロールから直接ビデオを再生することは不可能だと思います. しかし、確認してもらいたい。ありがとう。

4

0 に答える 0