2012-04-07 3 views
4

두 개의 AVPlayers가 동기화되어야하는 앱에 대한 매우 구체적인 요청이있는 클라이언트가 있습니다. 하나의 비디오는 일부 컨텐츠 용이고 다른 하나는 발표자가 컨텐츠에 대해 말하기위한 것입니다. AVMutableComposition을 사용하여 비디오를 하나의 비디오로 결합하는 것은 발표자 비디오가 사용자가 생성 한 이벤트에 응답 할 수 있어야하기 때문에 옵션이 아닙니다 (예 : 발표자를 표시하거나 숨길 수있는 기능이 있어야 함). 특정 AVMutableCompositionTrack에 대한 그런 종류의 제어권을 갖는 방법.두 개의 AVPlayers를 동기화 유지

그래서 두 AVPlayers가 동기화되어 있는지 확인하는 방법을 알아 냈습니다.이 작업을 수행하는 다른 도구에 대한 경험이 있거나 다른 사람이이 작업을 수행했는지 궁금합니다. automaticallyWaitsToMinimizeStalling 때

감사

+0

플레이어의 AVPlayerLayers를 동일한 AVSynchronizedLayer에 넣으려고 했습니까? (참고 : 나는 아직 시도하지 않았다) –

+0

나는 그것을 시도했다고 믿는다. AVSynchronizedLayer는 한 플레이어와 동기화 된 애니메이션을 유지하기위한 것입니다. 나는 수동으로 두 선수를 시작/중지했다. 그런 다음 클라이언트가 모든 문제를 만든 스펙을 변경했습니다. – moshe

+0

D' oh! 나는 그것이 일어날 때 그것을 싫어! 어쨌든, 그것은 나의 현재 접근법이기도합니다. 내가 선수들 중 한 곳에서 많은 것을 찾고 있기 때문에 고통 스럽다. 더 간단한 솔루션을 원합니다. –

답변

1

다음 방법은 라이브 스트리밍이 방법은 현재 HTTP 지원되지 않습니다

- (void)setRate:(float)rate 
      time:(CMTime)itemTime 
    atHostTime:(CMTime)hostClockTime; 

- (void)prerollAtRate:(float)rate 
    completionHandler:(void (^)(BOOL finished))completionHandler; 

주의 사항

중요을 사용하는 사람 또는 YES입니다. 자동으로 WaitToMinimizeStalling이 YES 인 경우 클라이언트가 iOS 10.0 이상 또는 macOS 10.12 이상에 연결된 클라이언트의 경우 이 메서드를 호출하면 NSInvalidArgument 예외가 발생합니다.

"라이브"는 "현재"이므로 앞으로 탐색하고 속도를 1.0 미만으로 설정하면 스트림을 추가 버퍼링하게됩니다 (두 번째 지점은 추측 임). 보조 노트로 문서

https://developer.apple.com/documentation/avfoundation/avplayer/1386591-setrate?language=objc

https://developer.apple.com/documentation/avfoundation/avplayer/1389712-prerollatrate?language=objc

는 HLS 스트림이 진정으로 라이브 스트림은 "현재의 순간"없는 것을 고려 스트림을 소모 clientes 중 몇 초 다를 수 있습니다 , 예를 들어 게시자와 소비자 간의 지연이 1 초 동안 보장되는 WebRTC의 반대입니다.