Производительность QTMovie addImage - PullRequest
1 голос
/ 30 ноября 2011

Я работаю над захватом видео на рабочем столе. Я реализовал захват экрана, который работает быстро. Затем я добавляю каждый скриншот в QTMovie через addImage: forDuration: withAttributes: но он работает очень медленно, поэтому, когда я пытаюсь создать полноэкранный захват (например, 1920x1080), у меня есть только 1,2 кадра в секунду. Я попытался собрать скриншоты в главном потоке и обработать их (добавить в QTMovie) в другом потоке, и у меня очень быстро растет потребление памяти (полученные скриншоты несжатые). Есть идеи? Спасибо.

1 Ответ

3 голосов
/ 14 декабря 2011

Я согласен addImage:forDuration:withAttributes: не очень хороший метод для покадрового захвата. Мы также испытали утечки памяти внутри QTKit фреймворка, когда использовали его для захвата с большим количеством кадров.

Намного лучших результатов можно достичь, используя Quicktime framework. В частности функция AddMediaSample2() для добавления изображений в фильм.

Вы должны быть осторожны, если вы используете один поток, чтобы получить кадры, и другой поток, чтобы добавить данные в фильм. Вы можете прийти к тому, что у вас будет очень много кадров очень быстро, но ваши объекты не смогут добавить все их в фильм с одинаковой скоростью. Чтобы продолжить, вам может понадобиться сбросить определенные кадры.

Как правило, захват - сложный процесс. Удачи.

...