Я бы хотел сделать вот что:
- воспроизвести мастер-фильм Quicktime (prores или pjpg) на одном экране (со звуком)
- воспроизвести другой ведомый фильм Quicktime (prores или pjpg) на другом экране синхронно с ведущим
- когда я нажимаю влево или вправо, переключаться между разными ведомыми фильмами
Вот что я сделал:
- создать NSWindow для каждого экрана
- создать массив QTMovies (фактически массив массивов на экран)
- создать массив QTMovieViews (фактически массив массивов на экран)
- играть в основной QTMovie как обычно
- настроить NSTimer для обновления текущего времени ведомого фильма от времени основного фильма
- если нажата клавиша, поменяйте вид содержимого окна на новый QTMovieView
мой полный код находится на http://codepad.org/gDsJLPAy
Все это работает, однако, когда я переключаю видео, я получаю однокадровую вспышку старого кадра видео, на которое переключается. Т.е. если я запускаю приложение для 50 кадров и переключаюсь на SlaveVideo2, я мельком вижу кадр 0 SlaveVideo2, а затем он немедленно переходит к кадру 50 SlaveVideo2 и продолжает работать как обычно. Если после 20 кадров я снова переключаюсь на SlaveVideo1, я мельком вижу кадр 50 SlaveVideo1, а затем он переходит к кадру 70 SlaveVideo1 и продолжает работать как обычно.
Я схожу с ума, пытаясь понять это. Я пробовал всевозможные методы обновления и отображения, но безрезультатно. Есть идеи, как я могу это исправить?
P.S. Вы можете видеть в timerFireMethod, если я все время обновляю все ведомые фильмы (а не только активный), мерцания у меня не возникает. Очевидно, это не решение, так как я постоянно ищу тонны видео, которые слишком тяжелые и ненужные!
P.P.S. Я попытался воссоздать настройку в Quartz Composer, и у меня возникла точно такая же проблема.
I'm on 10.7.3