2010-10-24 5 views
5

ho uno strano problema: voglio generare un nuovo file audio da due files audio e il silenzio.AVMutableCompositionTrack - insertTimeRange - problema insertEmptyTimeRange

sound1: 2 secondi lungo + silenzio: 2 secondi di silenzio + SOUND2: 2 secondi lungo

Quando provo il codice qui sotto, ottengo lunga da 6 secondi soundfile con tutte le parti, ma in un ordine diverso! L'ordine è: sound1, SOUND2, il silenzio

io non sono in grado di mettere questo silenzio nel bel mezzo di questa composizione (anche non all'inizio). È un comportamento tipico o ho qualcosa che non va?

Ecco il codice per mettere insieme i segmenti:

[compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, [audio1 duration]) ofTrack:clipAudioTrack1 atTime:kCMTimeZero error:nil]; 
[compositionAudioTrack insertEmptyTimeRange:CMTimeRangeMake(kCMTimeZero, CMTimeMake(2, 1))]; 
[compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, [audio2 duration]) ofTrack:clipAudioTrack2 atTime:CMTimeMake(4, 1) error:nil]; 

Forse qualcuno ha un'idea? Grazie in anticipo!

proposito: seguente codice senza insertEmptyTimeRange linea non funziona neanche, semplicemente genera 4 secondi di diapositive sonori e Sound2 alla fine sound1:

[compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, [audio1 duration]) ofTrack:clipAudioTrack1 atTime:kCMTimeZero error:nil]; 
[compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, [audio2 duration]) ofTrack:clipAudioTrack2 atTime:CMTimeMake(4, 1) error:nil]; 

Sembra che non sia permesso che non ci sia "niente" tra i segmenti !?

risposta

1

Ancora non so cosa significhi questo "insertEmptyTimeRange". Ho fatto un lavoro con un "silenzio", un file audio che non contiene nulla. Ho messo questo file audio vuoto tra i due file audio e questo lo fa per me. Domanda chiusa;) (Ma se qualcuno potesse spiegare questo "insertEmptyTimeRange" questo sarebbe comunque interessante ...)

+0

Hai utilizzato la modalità pass-through durante l'esportazione della composizione? – zoul

+0

cosa fai: modalità pass-through? Ho lo stesso problema. Sto inserendo il passaggio attraverso le istruzioni nell'intervallo di tempo vuoto. – comonitos

1

ho ottenuto che funziona come segue:

[compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, CMTimeMake(2,1)) 
           ofTrack:audioTrack 
           atTime:kCMTimeZero 
           error:nil]; 
[compositionAudioTrack insertEmptyTimeRange:CMTimeRangeMake(CMTimeMake(2, 1), CMTimeMake(4, 1))]; 
[compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, CMTimeMake(2,1)) 
           ofTrack:audioTrack 
           atTime:CMTimeMake(4, 1) 
           error:nil]; 

Il "campo di tempo vuoto" ha bisogno di essere (2,4) se i tuoi suoni provengono da (0,2) e (4,6).

0

Non sono sicuro se il suo ritardo,

insertEmptyTimeRange: Se si inserisce un intervallo di tempo vuoto nella traccia, qualsiasi supporto che è stato presentato durante quell'intervallo prima dell'inserimento saranno presentati invece subito dopo.

Quindi, tutto quello che dovete fare è aggiungere entrambe le clip e poi aggiungere l'intervallo emptytime al momento 2. Questo dovrebbe funzionare

insertTimeRange (0-2)
insertTimeRange (2-4)
insertEmptyTimeRange (2 to 4)