2012-11-15 6 views
21

그래서 Xcode에서 프로젝트로 드래그 한 간단한 인트로 애니메이션 비디오 파일을 재생하려고하므로 내 mainBundle에서 재생할 수 있어야합니다. * 인해 캐치되지 않는 예외 'NSInvalidArgumentException'응용 프로그램 종료, 이유는 : '- 전무 문자열 매개 변수 [NSURL initFileURLWithPath : :] *'mainBundle에서 MP4 비디오 파일을 재생할 수 없습니다

NSURL *urlString = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"introvideo" ofType:@"mp4"]]; 
MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:urlString]; 
[player play]; 

내가이 오류 메시지가 :이 코드

도움이 될 것입니다.

+0

첫째, 내 문제는 introvideo.mp4 파일이 기본 번들에 존재하지 않는 것을이었다. 둘째로, 전 세계 플레이어가 전 세계를 대상으로 할 수있게해야했습니다. 이로 인해 비디오 게임이 잘되었습니다. 모든 제안에 감사드립니다, 얘들 아! – PinkFloydRocks

답변

57

이렇게하면 코드에서 introvideo.mp4 파일을 찾을 수 없습니다. 해당 파일을 번들에 성공적으로 추가했는지 확인하십시오. 프로젝트 설정에서 체크 인 할 수 있습니다 : 번들 리소스 복사. ofType : 반환 nil을 enter image description here

+0

답해 주셔서 감사합니다 - Copy Bundle Resource는 어디에서 찾을 수 있습니까? 확인란입니까? 이것은 과거에는 나에게 결코 문제가되지 않았기 때문에 갑자기 갑자기 나타났다. – PinkFloydRocks

+0

감사합니다. 번들에 수동으로 비디오를 추가하면 충돌이 해결되었습니다! – PinkFloydRocks

+0

당신은 오신 것을 환영합니다. – sunkehappy

2
NSURL *url = [NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"video" ofType:@"mov" inDirectory:@""]]; 

MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:url]; 
[[player view] setFrame:[self.view bounds]]; // Frame must match parent view 
[self.view addSubview:[player view]]; 
[player play]; 
[player release]; 
+0

좋아, 리소스가 번들에 복사되지 않았으므로 파일을 수동으로 추가 한 후에 크래시가 사라졌습니다. 그러나 코드를 사용하여 파일을 재생해도 비디오가 표시되지 않습니다. 컨트롤러가없는 검은 색 MPMoviePlayerController를 보여줍니다 - 그 이유는 무엇입니까? – PinkFloydRocks

+0

사용중인 iOS 버전을 알 수 있습니까? – rehan

3

그것은 는 pathForResource을 보인다. 확인하십시오

  1. 이 파일은 실제로 "복사 리소스"빌드 단계에 추가됩니다.
  2. 파일의 경로에 실수를하지 않았습니다. 기기의 경로는 대소 문자를 구분합니다.
3

해당 비디오가 응용 프로그램의 리소스 번들에서 사용 가능한지 확인해야합니다.

귀하가 언급 한대로 you getting this error message: * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* -[NSURL initFileURLWithPath:]: nil string parameter.

단순히 resourcePath에 문제가 있음을 나타냅니다. 즉, 해당 파일이 Resource Bundle에 존재하지 않음을 의미합니다. 그 이유는 pathForResourcenil 경로를 반환합니다.

해당 비디오 파일을 다시 넣고 In Resource Bundle에 파일이 있는지 확인하십시오.

코드가있는 AHead로 이동해야합니다. Rehan 또한 게시됩니다.

NSURL *url = [NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"video" ofType:@"mov" inDirectory:@""]]; 

    MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:url]; 
    [[player view] setFrame:[self.view bounds]]; // Frame must match parent view 
    [self.view addSubview:[player view]]; 
    [player play]; 
    [player release]; 

희망 사항은 충분할 것입니다.

감사합니다.

4

코드가 올바르지 않습니다. 다음 사항에 따라 변경하십시오. 비디오를 번들 리소스로 복사하십시오.

1

전체 "사운드"디렉토리를 프로젝트에 넣고 "번들 리소스 복사"섹션에 추가했습니다. 그것은 잘 작동했지만 그때 그것은 부서지기 시작했습니다.

해결 방법은 파일 이름 앞에 디렉터리 이름을 추가하는 것이 었습니다. 예,이 하지 작업을했다 :

SKAction.playSoundFileNamed("crash.caf", waitForCompletion: false) 

을 ...

SKAction.playSoundFileNamed("Sounds/crash.caf", waitForCompletion: false) 
2

엑스 코드 9

다음

업데이트 된 이미지는 다음과 같습니다 그러나이 작업을했다.

빌드 단계> 번들 리소스을 복사하고 파일이 있는지 확인하십시오. 그렇지 않은 경우 "+"버튼을 눌러 추가 할 수 있습니다. 모든

enter image description here

관련 문제