Domanda

Solo in cerca di come aggiungere una filigrana o una sorta di sovrapposizione per video utilizzando cacao. Non ho bisogno di un passo per passo (anche se sarebbe impressionante), ma più o meno alla ricerca di dove dovrei iniziare a cercare di imparare. Ci sono quadri sviluppati a lavorare per questo. Vorrebbe qualcosa nativo di cacao o Objective-C o C, perché vorrei finalmente dare un'andare su iPhone. Qualsiasi aiuto sarebbe grande.

È stato utile?

Soluzione

Non sono sicuro se si intende solo per la riproduzione, o se si desidera esportare un video con una filigrana che faccio vedere su altri giocatori.

Se si intende solo per la riproduzione, probabilmente si può solo aggiungere una vista sulla parte superiore della vista giocatore su Mac e iPhone che contiene la filigrana.

Se vuoi una filigrana sul video stesso, questo è difficile su Mac e probabilmente impossibile su iPhone senza essenzialmente riscrivere QuickTime.

Su Mac, il codice potrebbe essere simile a questo (è necessario importare 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);

... E questo è tutto! Il filmato ha ora una filigrana, ed è possibile esportarlo su file.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top