Pergunta

Apenas procurando como adicionar programaticamente uma marca d'água ou algum tipo de sobreposição ao vídeo usando cacau. Não estou procurando um passo a passo (embora isso seja impressionante), mas mais ou menos procurando onde eu deveria começar a aprender como. Existem estruturas desenvolvidas para funcionar para isso. Gostaria de algo nativo do cacau ou Objective-C ou C, porque eu gostaria de eventualmente dar uma vez no iPhone. Qualquer ajuda seria ótimo.

Foi útil?

Solução

Não tenho certeza se você quer dizer apenas para reprodução, ou se deseja exportar um vídeo com uma marca d'água que aparecerá em outros jogadores.

Se você quer dizer apenas para reprodução, provavelmente pode adicionar uma exibição sobre a visualização do jogador no Mac e iPhone que contém a marca d'água.

Se você deseja uma marca d'água no próprio vídeo, isso é difícil para o Mac e provavelmente impossível no iPhone sem reescrever essencialmente o QuickTime.

No Mac, o código pode ser assim (você precisa importar 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 é isso! Seu filme agora tem uma marca d'água e você pode exportá -lo para arquivar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top