2010-11-26 1 views
5

저는 현재 AVPlayer를 사용하여 AVPlayerLayer와 함께 일부 비디오를 재생하고 있습니다. 비디오를 재생하는 동안, 나는 비디오 중에 매 30 분마다 시간 업데이트를 등록했다. 이 값은 비디오의 해당 지점에서 가속도 그래프를 그리고 비디오와 함께 업데이트되도록 사용됩니다. 그래프는 비디오의 CMTime을 사용하므로 비디오의 다른 부분으로 건너 뛴다면 그래프는 즉시 비디오의 해당 시점을 추가 작업없이 나타냅니다.AVPlayerLayer - 휠을 다시 프로그래밍 하시겠습니까?

내가 아는 한, MediaPlayer 프레임 워크가 제공하는 인터페이스와 비슷한 인터페이스를 원한다면, 직접해야 할 것입니다.

MediaPlayer 프레임 워크에서 내 AVPlayer를 사용하는 방법이 있습니까? (볼 수는 없습니다.) 아니면 MediaPlayer 프레임 워크를 사용하여 증분 시간 업데이트를 등록하는 방법이 있습니까? 사람이 관심이 있다면

내 코드는 다음과 같습니다

[moviePlayer addPeriodicTimeObserverForInterval: CMTimeMake(1, 30) queue: dispatch_queue_create("eventQueue", NULL) usingBlock: ^(CMTime time) { 
loopCount = (int)(CMTimeGetSeconds(time) * 30); 
if(loopCount < [dataPointArray count]) { 
    dispatch_sync(dispatch_get_main_queue(), ^{ 
    [graphLayer setNeedsDisplay]; 
    }); 
} 
}]; 

감사합니다!

답변

0

MPMoviePlayer가 표시하는 창 크롬에 대해 이야기하고 있다면이 UI를 직접 만들 것을 두려워하고 있습니다.

AFAIK 아주 간단한 "미디어 재생"프레임 워크 인 MediaPlayer 프레임 워크를 사용하여 타이밍 동작을 달성 할 방법이 없습니다. 당신은 AVFoundation을 사용하여 옳은 일을하고 있습니다.

사용자가 직접 UI를 만들어야합니다. 내 제안은 XIB 파일로 시작하여 일반 레이아웃을 만드는 것입니다. 도구 모음 상단에는 완료 단추, 사용자 지정 재생보기 (AVPlayerLayer 사용)를 나타내는 큰보기 및 별도의보기가 포함되어 컨트롤을 포함합니다.

MPMoviePlayer UI를 시뮬레이트하려는 경우 필요에 따라 재생 컨트롤과 도구 모음을 자동으로 표시하거나 숨기려면 사용자 지정 컨트롤러 코드를 작성해야합니다.

+0

Woa. 이 답변은 질문보다 거의 1 년 후이고 여전히 받아 들여졌습니다! 브라보. – Almo

0

AVSynchronizedLayer 클래스를 찾고 싶을 수도 있습니다. 나는 공식 프로그래밍 가이드에 많은 부분이 있다고 생각하지 않는다. 여기저기서 약간의 정보를 찾을 수 있습니다 : subfurther, Otter Software.

O'Really Programming iOS 4 (또는 5)에는 정사각형을 애니메이션과 동기화하여 선을 따라 이동/정지하는 방법에 대한 간단한 참조가 있습니다. WWDC 2011 세션 Working with Media in AV Foundation 중에 다른 데모 (코드가 많지 않음)가 표시됩니다.