J'essaie de combiner deux .mp3 en un seul fichier .wav en utilisant QTKit. Cela semble fonctionner, mais les dernières secondes du deuxième fichier sont tronquées. Des idées?Combiner et convertir des fichiers MP3 en utilisant QTKit
- (IBAction)combineSelectedFilesAndOutputAsWAV {
QTMovie *movie = [QTMovie movieWithFile:fileOne error:NULL];
[movie setAttribute:[NSNumber numberWithBool:YES] forKey:QTMovieEditableAttribute];
QTMovie *segmentTwo = [QTMovie movieWithFile:fileTwo error:NULL];
QTTimeRange range = { .time = QTZeroTime, .duration = [segmentTwo duration] };
[segmentTwo setSelection:range];
[movie appendSelectionFromMovie:segmentTwo];
while([[movie attributeForKey:QTMovieLoadStateAttribute] longValue] != 100000L) {
//wait until QTMovieLoadStateComplete
}
NSDictionary *exportAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], QTMovieExport,
[NSNumber numberWithLong:kQTFileTypeWave], QTMovieExportType, nil];
NSString *outputFile = [NSString stringWithFormat:@"%@.wav", outputFilename];
NSString *filepath = [destinationDirectory stringByAppendingPathComponent:outputFile];
if (![movie writeToFile:filepath withAttributes:exportAttributes]) {
//ERROR
}
}
(Ignore la boucle en attendant QTMovieLoadStateComplete. Je vais passer à l'aide de notifications à l'avenir. Mais pour l'instant, il ne faut pas la matière ...)
Existe-t-il un moyen facile de décoder le fichier en utilisant QTKit? Sinon, je peux juste utiliser un delta pour m'assurer que la longueur est suffisamment longue pour que le fichier entier soit ajouté. –
Je ne suis pas sûr en ce qui concerne QTKit, mais cela peut être fait par Core Audio (je commence juste à apprendre Cocoa). Mais si possible, vous devriez éviter de décoder (au moins pour gagner du temps de traitement). Je ne vois pas le besoin de décoder pour vos objectifs particuliers. C'est-à-dire: utilisez simplement une énorme MaxDuration, ou utilisez la suggestion N 2). – VitalyVal