Modifier les dimensions d'une video à  l'export

Bonjour 


 


Je souhaite modifier les dimensions d'une video lors de son export sur disque dur


J'utilise cette methode pour l'export mais je n'ai pas trouvé de moyens pour traiter la qualité ou la dimension de l'export, un peu comme l'export lors d'une capture en utilisant  :  QTCompressionOptionsSD480SizeH264Video


 


 


voici le code



int selectedItem;
NSMutableDictionary *settings = nil;
static NSArray *exportTypes = nil;

// init
if (exportTypes == nil) {
exportTypes = [NSArray arrayWithObjects:
[NSNumber numberWithLong:'H264'], [NSNumber numberWithLong:'3gpp'], [NSNumber numberWithLong:'dvc!'],
[NSNumber numberWithLong:'FLC '], [NSNumber numberWithLong:'mpg4'], [NSNumber numberWithLong:'MooV'],
[NSNumber numberWithLong:'embd'], [NSNumber numberWithLong:'M4VP'], [NSNumber numberWithLong:'M4VH'], nil];
}
// export

// init
selectedItem = [mExportTypePopUpButton indexOfSelectedItem];
settings = [NSMutableDictionary dictionaryWithCapacity:7];
[settings setObject:[NSNumber numberWithBool:YES] forKey:QTMovieExport];

if ((selectedItem >= 0) && (selectedItem < [exportTypes count]))
[settings setObject:[exportTypes objectAtIndex:selectedItem] forKey:QTMovieExportType];

// export
NSFileManager *fileManager1 = [[NSFileManager alloc]init];

BOOL isDir;
BOOL ok = [fileManager1 fileExistsAtPath:[[sheet URL]path]
isDirectory:&isDir];
if (ok == YES) {
ok = [fileManager1 removeItemAtPath:[[sheet URL]path]
error:NULL];
}

// et enregistrer
NSString *path = [[sheet URL]path];

if (![movie writeToFile:path withAttributes:settings])
{
NSRunAlertPanel(@Error, @Error exporting movie., nil, nil, nil);
}else {
NSRunAlertPanel(@Enregsitrement de la video,@Opération OK,@OK,nil,nil);
}
 

Merci d'avance


Réponses

  • mpergandmpergand Membre
    juin 2013 modifié #2

    Peut-être en modifiant au niveau du track ?



    NSArray* videoTracks=[movie tracksOfMediaType:QTMediaTypeVideo];
    QTTrack* track=[videoTracks objectAtIndex:0];
    NSSize size=[[track attributeForKey:QTTrackDimensionsAttribute] sizeValue];
    NSValue* sizeValue=[NSValue valueWithSize:NSMakeSize(size.width/2,size.height/2)];
    [track setAttribute:sizeValue forKey:QTTrackDimensionsAttribute];


  • merci pour cette piste


     


    J'essaye

  • MickMick Membre

    Tiens-nous au courant. Ca peut intéresser !


  • Fred20Fred20 Membre
    juin 2013 modifié #5
    Je viens d'essayer ta solution mpergand. Elle fonctionne très bien, à  condition que la video source soit de format .mov ET que le format de sortie soit également .mov. Si le format de sortie est .m4v (avec format source .mov) ça ne marche pas (ça plante). Si le format source est .dv  avec un format de sortie .mov : ça marche mais si le format de sortie est .dv :  pas de modif de taille (ce qui semble logique de part le format dv qui est fixe).

     

    En fait, de .mov en .mov, la taille est celle qui s'affiche dans la movieView, ce qui justifie l'intérêt de cette méthode.

     

    D'où mon autre question: comment reconnaitre le format source d'une séquence ? J'ai bien trouvé la taille initiale (id dic = [movie attributeForKey:QTMovieNaturalSizeAttribute]; mais pas le format.



    Des pistes?

     

    Merci d'avance

  • J'ai peut être trouvé une piste pour connaitre le format mais elle me donne le codec et non le format, c'est à  dire que cela me donne par exemple H264 et non m4v. Voici le code : 



    QTTrack* track=[videoTracks objectAtIndex:0];
    id format = [track attributeForKey:QTTrackFormatSummaryAttribute];
    NSArray *listInfo = [format componentsSeparatedByString:@,];
    NSString *formatInfo = [listInfo objectAtIndex:0];

    Donc si quelqu'un a une idée, je suis preneur !


     


    Merci d'avance


Connectez-vous ou Inscrivez-vous pour répondre.