ココアを使用して、透かしやある種のオーバーレイをプログラムでビデオに追加する方法を探しています。ステップバイステップを探すのではなく(それは素晴らしいことですが)、多かれ少なかれ、方法を学ぶためにどこから始めるべきかを探しています。このために機能するように開発されたフレームワークはありますか。最終的には iPhone で試してみたいので、cocoa または Objective-C または C にネイティブなものが欲しいです。どんな助けでも素晴らしいでしょう。
質問する
1518 次
1 に答える
3
単に再生するためなのか、それとも他のプレーヤーに表示される透かしを含むビデオをエクスポートしたいのかはわかりません。
再生だけを意味する場合は、透かしを含む 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);
... 以上です!ムービーに透かしが追加され、ファイルにエクスポートできるようになりました。
于 2009-10-20T13:10:36.883 に答える