2010-11-25 2 views
0

정말 눈에 띄는 것이 빠져 있습니다.동영상 파일을 재생할 수 없습니다.

나는 <MediaPlayer/MediaPlayer.h>을 포함하고이 코드가했습니다

NSURL *videoURL = [NSURL fileURLWithPath:pathToFile]; 
MPMoviePlayerViewController *mediaPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL]; 
[self presentMoviePlayerViewControllerAnimated:mediaPlayer]; 
mediaPlayer.view.backgroundColor = [UIColor blackColor]; 
[mediaPlayer release]; 

을하지만 비디오가 재생되지 않습니다. 비디오가 완벽하게 작동하는 다른 곳의 코드를 복사했습니다.

pathToFile 변수가 이전 행에서 자원 폴더의 파일을 문서 디렉토리로 이동시키기 때문에 변수가 정확합니다.

왜 작동하지 않는지 알고 싶습니다.

감사

+0

그것이 있다고 생각하는 곳을 다시 확인하십시오. 예를 들어 복사가 완료 되었습니까? –

+0

'[[NSFileManager defaultManager] fileExistsAtPath : (NSString *) path]' –

+0

또한 리소스 디렉토리에서는 재생되지만 문서 디렉토리에서는 재생되지 않습니까? 이 코드가 실행되면 어떻게됩니까? –

답변

2

당신은 presentMoviePlayerViewControllerAnimated

NSString *movieFile=[[NSBundle mainBundle] pathForResource:@"movie" ofType:@"m4v"]; 
moviePlayer= [[MPMoviePlayerController alloc] initWithContentURL:url]; 
moviePlayer.view.frame = self.view.frame; 
[self.view addSubview:moviePlayer.view]; 
[moviePlayer setFullscreen:YES animated:YES]; 

이 나를 위해 잘 작동를 제외하고 다음 코드를 사용할 수 있습니다.

+0

이 작동하지만 ViewController 하나가 작동하지 않습니다! :(내가보기 엔 컨트롤러를 만들기 위해 탐색 컨트롤러에 작업해야한다는 것을 알았습니다. 이유에 대해 사과 참조는 '이 메서드는 UIViewController 클래스의 범주에 속해 있습니다. Media Player 프레임 워크에서 구현했습니다. "도와 줘서 고마워. :) –

2

내가 presentMoviePlayerViewControllerAnimated가 수신기를 유지 생각하지 않는다, 그래서 당신은 너무 일찍 동영상 플레이어를 출시하고 것처럼 보인다.

self.mediaPlayer = [[[MPMoviePlayerViewController alloc] 
        initWithContentURL:videoURL] autorelease]; 

을 그리고 릴리스 이후로 : 그래서 초기화 다음

@interface MyClass : SuperClass { 
    MVMoviePlayerViewController *mediaPlayer; 
} 
@property (nonatomic, retain) MVMoviePlayerViewController *mediaPlayer; 
@end 

@implementation MyClass 
@synthesize mediaPlayer; 
// rest of class implementation here... 
@end 

: 비디오가 후

self.mediaPlayer = nil; 

(어떻게 코드를 작성하는 방법은 MediaPlayer를에게 보유 재산을 시도 할 수 재생을 마치면 MPMoviePlayerPlaybackDidFinishNotification 알림을 확인하십시오.)

곰도 있습니다. n presentMoviePlayerViewControllerAnimated이 iOS 3.2에 처음 등장 했으므로이 코드는 이전 iOS 버전에서는 작동하지 않습니다. 그러나 나는 그것이이 경우에 문제라고 생각하지 않는다.