Есть ли шанс обновить фильм с помощью AVfoundation без копирования (например, updateMovieFile в QTKit)?
Недавно я использовал AVFoundation для добавления метаданных к фильмам в своем приложении OS X 10.7+. Поскольку моя цель - ARC (64 бит), QTKit.framework и Quicktime.framework не будут работать. В этом сценарии я ДОЛЖЕН написать временный фильм, используя AVAssetExportPresetPassthrough, а затем заменить его исходным файлом.
Однако Apple отклонила мое приложение, заявив, что оно записывает данные из разрешенных папок (мое приложение получает файлы фильмов для добавления метаданных посредством перетаскивания, поэтому я не знаю, где будет сохраняться). Как я могу заменить исходный фильм обновленным фильмом метаданных без метода updateMovieFile?.
Есть ли что-нибудь подобное в 64-битной земле? Любой обходной путь? Любой совет?.
Большое спасибо.
1 ответ
QTKit является 64-битным и может использоваться. Использование ARC или нет не имеет никакого отношения к существующим платформам, поскольку среда выполнения одинакова для приложений ARC и MRC. ARC - только шаг препроцессора и компилятора, он не требует специальной среды выполнения, в отличие от сборки мусора.
Чтобы сохранить файл в любой папке, если ваше приложение находится в изолированной программной среде, способ сделать это - использовать PowerBox, который является отдельным процессом, который контролирует и отображает диалоговые окна "Открыть" и "Сохранить". PowerBox используется автоматически, если изолированное приложение запрашивает NSOpenPanel
или же NSSavePanel
,
Это работает так, что когда пользователь перетаскивает файл в ваше приложение, ваше приложение отображает NSSavePanel
и позвольте пользователю выбрать выходное местоположение. NSSavePanel
на самом деле отображается PowerBox и позволяет вашему приложению вырваться из песочницы, чтобы записать в местоположение файла, которое выбирает пользователь. Вы можете настроить NSSavePanel
указать местоположение существующего файла, так что пользователю просто нужно нажать Сохранить.
Я понимаю, что это не идеально, потому что это нарушает приятный интерфейс перетаскивания, но в настоящее время это единственный поддерживаемый способ записи в файл вне песочницы.