2012-06-01 6 views
0

Objective-C 및 Cocoa로 작업하는 것이 처음입니다.QTMovie 오브젝트를 여러 개로드하고 재생할 대상을 선택하려면 어떻게합니까?

Quicktime으로 동영상을 재생하기위한 샘플 코드는 here입니다. 나는 프로그램을 시작할 때 다중 QTMovie을로드 할 수 있도록 확장하는 방법을 궁금하며 최소한의 대기 시간으로 요청할 때 각각을 재생합니다.

나의 초기 전략은 QTMovie 개체를 보유하고있는 클래스와이를로드하고 재생하는 방법을 만드는 것이 었습니다. 그런 다음 내 주 수업에서는이 MovieContainer 개체 목록을 얻었습니다.

내가 이것을 구현하려고

, 나는

Domain=NSOSStatusErrorDomain Code=-2098 "The operation couldn’t be completed. 
(OSStatus error -2098.)" (component is not thread-safe) 

나는 완전하게 잘못된 방향으로 가고 있는가 오류 메시지와 각 QTMovie의 로딩하는 동안 QTMovieLoadStateError를 얻을, 또는 나는 단지 몇 줄의 코드를 놓친 거지 그게 "thread-safe"하게 만들까요?

도움 주셔서 감사합니다.

답변

0

스레드 배경 (비 주)에 QTMovie 객체와 작업하기 전에 당신이 호출 할 필요가 :

[QTMovie enterQTKitOnThread] 

또는

[QTMovie enterQTKitOnThreadDisablingThreadSafetyProtection] 

어떤 동영상의 코덱에 따라 달라 선택 하나 파일. 두 번째 변형은 스레드로부터 안전하지 않은 구성 요소를 허용합니다. 일부 드문 코덱의 경우 이것이 유일한 방법 일 것입니다. 당신의 도움에 대한

[QTMovie exitQTKitOnThread] 
+0

감사 :

호출은 함께 쌍을 이루어야합니다! 그 스레드 오류를 제거했지만 지금은 '필요한 데이터 참조를 확인할 수 없습니다.'얻을. – flutillie

+0

동일한 오류가있는 http://stackoverflow.com/questions/5582274/qtkit-strange-error가 발견되었지만 해결책이 도움이되지 않습니다. QTMovieLoadStateError에 대한 QTMovieLoadStateAttribute의 값을 검사 할 때만이 오류를 볼 수 있습니다. – flutillie

+0

동영상을로드하는 데 약간의 시간이 걸릴 수 있습니다. attributeForKey :'QTMovieLoadStateAttribute'를 검사하고'QTMovieLoadStateComplete'와 같을 때까지 기다려야합니다. 예를 들어, while ([[movie attributeForKey : QTMovieLoadStateAttribute] longValue]! = QTMovieLoadStateComplete) { [[NSRunLoop currentRunLoop] runMode : NSDefaultRunLoopMode beforeDate : [NSDate distantFuture]]; }' – Davyd