2012-02-29 4 views
2

(참고 :! 여기 코드는 Monotouch/C 번호, 그러나 목표 - C 답변 환영입니다)로컬 파일은 AVAudioPlayer에서는 재생되지만 AVPlayer에서는 재생되지 않습니까?

내 애플 아이팟 라이브러리 파일뿐만 아니라 지역 MP3/M4A 파일을 재생 될 AVPlayer를을 사용하여 임. iPod 라이브러리 파일을 재생해도 문제가 없지만 AVPlayer에서 로컬 mp3 파일을 재생할 수는 없습니다.

는 예를 들어,이 코드는 작동합니다

NSUrl url; 
AVAudioPlayer player2; 

url = NSUrl.FromFilename(Path.Combine(Constants.TrackCacheLocation , songPath)); 

/* The url variable has the value file://localhost/private/var/mobile/Applications/B1ED2576-4398-43F3-8573-2FA3A0342265/Documents/Cache/Remote/dcaad4ff-452e-4d91-8788-c018e6b286f2.mp3 */ 

player2 = AVAudioPlayer.FromUrl(url); 
player2.Play(); 

위의 작품은 잘, 그것은 AVAudioPlayer를 사용하고 있습니다.

이 (AVPlayer를 사용)하지 않습니다 또한 (AVPlayer를 포함) 작동 로컬 또는 원격 웹 서버에서 NSURL 만들기

NSUrl url; 
AVPlayer player2; 

url = NSUrl.FromFilename(Path.Combine(Constants.TrackCacheLocation , songPath)); 

/* The url variable has the value file://localhost/private/var/mobile/Applications/B1ED2576-4398-43F3-8573-2FA3A0342265/Documents/Cache/Remote/dcaad4ff-452e-4d91-8788-c018e6b286f2.mp3 */ 

player2 = AVPlayer.FromUrl(url); 
player2.Play(); 

을, 예를 들면 :로드하는 동안 두 번째 또는 두에 대한 http://10.0.0.1/testing/test.mp3 지연 , 그럼 잘 연주하기 시작합니다. 나는 NSUrl을 올바르게 만들지 못한다고 느끼고있다. (비록 AVAudioPlayer에서는 괜찮은 편이지만). 어떤 사람이 잘못 될 수있는 아이디어가 있습니까? 나는 AVPlayer를의 CurrentItem.Status을 선택하면

또한, 알 수없는 남아, 그것은 결코 ReadyToPlay

에 변경되지
+0

"PrepareToPlay()"를 호출 했습니까? –

+0

AVPlayer에는 AVAudioPlayer 만있는 PrepareToPlay() (Apple 설명서에서 볼 수있는 것부터)가 없습니다. – Dermot

답변

0
NSUrl 또는 NSUrlRequest 매개 변수 디자인에 의해 비동기하고 문제가됩니다 사용

많은 API (or even crash) 로컬 변수로 정의 된 경우 (예 : 네이티브 코드에서 필요로 할 때 메서드가 반환 될 때 수집됩니다).

위의 코드는 작성한 위치에 대한 정보가 충분하지 않습니다. 로컬 변수를 사용하는 경우 AVPlayer이 더 이상 필요하지 않을 때까지 해당 변수를 필드로 승격하고 해당 변수가 존재하는지 확인하십시오 (예 : 다시 할당하지 않음).

+0

avplayer는 클래스 수준에서 만들어집니다. 그것의 음악 재생 앱으로서, 수업은 영원히 스코프에 남아 있습니다. 메서드 내에서 nsurl이 선언됩니다. avplayer가 iTunes 라이브러리 파일 및 원격 URL에 대한 제로 문제없이 잘 작동한다는 점에 유의하십시오. 로컬 파일 시스템 파일은 재생을 거부합니다 – Dermot

+0

URL과 로컬 및 원격 액세스가 다른 코드를 사용하기 때문에 관련이 없습니다. 경로는 다르게 행동 할 것입니다 (테스트 만하고, 아주 쉽게, 확실히 말할 수 있습니다). – poupou

+0

그냥 모든 변수를 클래스 수준 변수로 테스트 했는데도 여전히 작동합니다. AVAudioPlayer (URL이 유효하다는 것을 암시 함)로 재생되고 Xcode를 통해 내보내고 iTunes에서 잘 재생하므로 트랙이 확실히 유효합니다. – Dermot

관련 문제