QTMovie addImage: forDuration: withAttributes: не может быть воспроизведено QuickTime Player X - PullRequest
0 голосов
/ 16 октября 2011

У меня есть файл MOV, который я изменяю, добавляя дорожку с изображением в начало фильма (используя метод QTMovie -addImage). Когда я выравниваю такой фильм (используя -writeToFile: метод QTMovie), я получаю другой файл .mov с этим «водяным знаком» в начале. Но когда я пытаюсь воспроизвести его, я получаю сообщение о том, что для воспроизведения такого файла необходимо установить QuickTime 7 (оригинальный необработанный файл mov не требует QuickTime Player 7 и может нормально воспроизводиться в QT Player X со снежным барсом и львом).

Мне интересно, возможно ли сделать так, чтобы этот файл мог воспроизводиться на QuickTime Player X? Я бы не хотел, чтобы пользователи моего приложения были обязаны устанавливать эту старую версию плеера. Кроме того, некоторые приложения, такие как Final Cut Pro 7, кодировщик Telestream Episode Engine, Autodesk Smoke - просто не правильно понимают этот «формат файла» после добавления дорожки изображения.

Можно ли добавить изображение как дорожку фильма , а не как дорожку изображения? Может быть, используя старый QT API? (QTKit, похоже, все еще сырой).

Я указываю "mpv4" в качестве кодера изображения (в методе -addImage), но все же это изображение водяного знака не рассматривается как дорожка фильма, а скорее как дорожка изображения, закодированная с помощью кодировщика фильма.

Спасибо!

1 Ответ

1 голос
/ 18 октября 2011

Создайте новый фильм и установите атрибут, разрешающий редактирование:

QTMovie* trailerMovie = [QTMovie movie];
[trailerMovie setAttribute:[NSNumber numberWithBool:YES] forKey:QTMovieEditableAttribute];

Выберите диапазоны времени в оригинальном фильме и добавьте их к новому:

QTTimeRange selectionRange = QTMakeTimeRange(QTMakeTime(...), QTMakeTime(...));
[originalMovie setSelection:selectionRange];
[trailerMovie appendSelectionFromMovie:originalMovie];

Добавитьimages:

[trailerMovie addImage:image forDuration:duration withAttributes:nil];

Сохраните фильм в файл с атрибутом QTMovieFlatten:

[trailerMovie writeToFile:@"trailer.mov" withAttributes:[NSDictionary dictionaryWithObj:[NSNumber numberWithBool:YES] forKey:QTMovieFlatten]]

Попробуйте этот сценарий, пожалуйста, дайте мне знать, как он прошел.

...