Какао — Добавить водяной знак для видео. Общая информация

StackOverflow https://stackoverflow.com/questions/1594381

Вопрос

Просто ищу, как программно добавить водяной знак или какое-то наложение на видео с помощью какао.Не ищу шаг за шагом (хотя это было бы здорово), а более или менее ищу, с чего мне следует начать, чтобы узнать, как это сделать.Существуют ли структуры, разработанные для этого.Хотелось бы что-то родное для Cocoa или Objective-C или C, потому что я хотел бы в конечном итоге попробовать это на iPhone.Любая помощь будет отличной.

Это было полезно?

Решение

Я не уверен, имеете ли вы в виду только воспроизведение или хотите экспортировать видео с водяным знаком, который будет отображаться на других проигрывателях.

Если вы имеете в виду только воспроизведение, вы, вероятно, можете просто добавить представление поверх представления проигрывателя на Mac и iPhone, содержащее водяной знак.

Если вам нужен водяной знак на самом видео, это сложно на Mac и, вероятно, невозможно на iPhone без существенной перезаписи QuickTime.

На Mac код может выглядеть так (вам необходимо импортировать QTKit):

// Make a new movie so we don't destroy the existing one
QTMovie* movie = [[QTMovie alloc] initWithMovie:currentMovie 
                                      timeRange:QTMakeTimeRange(QTMakeTime(0,1000), [currentMovie duration]) 
                                          error:nil];

// Make it editable
[movie setAttribute:[NSNumber numberWithBool:YES] 
             forKey:QTMovieEditableAttribute];

//Get the size
NSValue *value = [movie attributeForKey:QTMovieNaturalSizeAttribute];
NSSize size = [value sizeValue];

// Add a new track to the movie and make it the frontmost layer
QTTrack *track = [movie addVideoTrackWithSize:size];
[track setAttribute:[NSNumber numberWithShort:-1] forKey:QTTrackLayerAttribute];        

// Create a codec dictionary for the image we're about to add
NSDictionary *imageDict = [NSDictionary dictionaryWithObjectsAndKeys:
        @"tiff", QTAddImageCodecType,
        [NSNumber numberWithLong:codecHighQuality], QTAddImageCodecQuality, nil];


// Get the video length in QT speak

QTTime qttime = [currentMovie duration];
NSTimeInterval reftime;

QTGetTimeInterval(qttime, &reftime);

//Add the image for the entire duration of the video 

[track addImage:image forDuration:qttime withAttributes:imageDict];

// Finally, tell the track that it should use its alpha correctly

MediaHandler media = GetMediaHandler([[track media] quickTimeMedia]);
MediaSetGraphicsMode(media, graphicsModeStraightAlpha, NULL);

...Вот и все!Теперь у вашего фильма есть водяной знак, и вы можете экспортировать его в файл.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top