Есть ли шанс обновить фильм с помощью AVfoundation без копирования (например, updateMovieFile в QTKit)?

Недавно я использовал AVFoundation для добавления метаданных к фильмам в моем приложении OS X 10.7+. Поскольку моей целью является ARC (64 бит), QTKit.framework и Quicktime.framework не будут работать. В этом сценарии я ДОЛЖЕН написать временный фильм, используя AVAssetExportPresetPassthrough, а затем заменить им исходный файл.

Однако Apple отклонила мое приложение, утверждая, что оно записывает данные из разрешенных папок (мое приложение получает файлы фильмов для добавления метаданных путем перетаскивания, поэтому я не знаю, где их сохранить). Как заменить исходный фильм фильмом с обновленными метаданными без метода updateMovieFile?

Есть ли что-нибудь подобное в 64-битной стране? Любое обходное решение? Любой совет?.

Большое Вам спасибо.


person rmvz3    schedule 01.01.2012    source источник


Ответы (1)


QTKit совместим с 64-разрядной версией и может использоваться. Использование ARC или нет не имеет никакого отношения к существующим платформам, поскольку среда выполнения одинакова для приложений ARC и MRC. ARC — это только шаг препроцессора и компилятора, он не требует специальной среды выполнения, в отличие от сборки мусора.

Чтобы сохранить файл в любую папку, если ваше приложение находится в песочнице, это можно сделать с помощью PowerBox, который представляет собой отдельный процесс, управляющий и отображающий диалоговые окна «Открыть» и «Сохранить». PowerBox используется автоматически, если изолированное приложение запрашивает NSOpenPanel или NSSavePanel.

Это будет работать следующим образом: когда пользователь перетаскивает файл в ваше приложение, ваше приложение будет отображать NSSavePanel и позволит пользователю выбрать место вывода. NSSavePanel на самом деле отображается PowerBox и позволяет вашему приложению выйти из песочницы, чтобы записать в расположение файла, которое выбирает пользователь. Вы можете настроить NSSavePanel так, чтобы он указывал на местоположение существующего файла, чтобы пользователю просто нужно было нажать Сохранить.

Я понимаю, что это не идеально, потому что нарушает приятный интерфейс перетаскивания, но в настоящее время это единственный поддерживаемый способ записи в файл вне песочницы.

person Rob Keniger    schedule 02.01.2012
comment
Спасибо, Роб. Извините, но я думаю, что ARC (OSX) требует 64-битную цель. Что касается диалоговых окон «Сохранить», это просто не сработает для моего приложения. Вы перетаскиваете кучу файлов из любого места, и нет смысла просить пользователя подтверждать каждый фильм. Однако спасибо за полезную информацию. Интересно, есть ли другой способ обновить файл фильма без необходимости его перезаписи. - person rmvz3; 02.01.2012
comment
Да, для ARC требуется 64-разрядная версия (технически для этого требуется современная среда выполнения, поэтому она работает в 32-разрядной версии на iOS, но на Mac современная среда выполнения доступна только в 64-разрядной версии). Я хотел сказать, что QTKit будет работать как в 32-, так и в 64-битной среде. - person Rob Keniger; 03.01.2012