AVASSETEXPORTSESSÃO - AVMUTabLECOMPOSIÇÃO - O arquivo de saída exportado está vazio

StackOverflow https://stackoverflow.com/questions/4004887

  •  25-09-2019
  •  | 
  •  

Pergunta

Eu tento adicionar um arquivo .mp3 a uma trilha AVMutableComposition e depois que eu quero exportar o novo arquivo. O problema é: o arquivo gerado existe após a exportação, mas está vazio e não pode ser reproduzido. Alguém vê o erro no meu código?

AVMutableComposition *saveComposition = [AVMutableComposition composition];
 NSArray *docpaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
 NSString *tempPath = [docpaths objectAtIndex:0];

 NSLog(@"Temporary Path: %@", tempPath);

 NSString *audioPath = [[NSBundle mainBundle] pathForResource: @"1" ofType: @"mp3"];
 NSURL *audioUrl = [[NSURL alloc] initFileURLWithPath:audioPath];
 AVURLAsset *audio = [AVURLAsset URLAssetWithURL:audioUrl options:nil];
 NSLog(@"%@", audio);
 [audioUrl release];
 AVMutableCompositionTrack *compositionAudioTrack = [saveComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
 AVAssetTrack *clipAudioTrack = [[audio tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];

 [compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, [audio duration])  ofTrack:clipAudioTrack atTime:kCMTimeZero error:nil];

 NSString *path = [tempPath stringByAppendingPathComponent:@"mergedaudio.m4a"];
 if([[NSFileManager defaultManager] fileExistsAtPath:path])
 {
  [[NSFileManager defaultManager] removeItemAtPath:path error:nil];
 }
 NSURL *url = [[NSURL alloc] initFileURLWithPath: path];

 AVAssetExportSession *exporter = [[[AVAssetExportSession alloc] initWithAsset:saveComposition presetName:AVAssetExportPresetAppleM4A] autorelease];
 exporter.outputURL=url;
 [exporter setOutputFileType:@"com.apple.m4a-audio"];

 NSLog(@"%@", [exporter supportedFileTypes]);
 exporter.outputFileType=[[exporter supportedFileTypes] objectAtIndex:0];

 [exporter exportAsynchronouslyWithCompletionHandler:^{

 }];

Agradeço antecipadamente !

Foi útil?

Solução

Como eu escrevi nos comentários, tinha algo a ver com os diferentes formatos de arquivo. Mudei meus arquivos para .m4a e também o código - então tudo (as fontes e os alvos desta operação) estão relacionados .m4a e funciona.

A propósito: eu tentei também trabalhar com .wav-arquivos, mas há coisas estranhas acontecendo enquanto as operações com o WAV. Eu não recomendo.

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