AVMutableCompositionTrack - insertTimeRange - problema insertEmptyTimeRange
-
25-09-2019 - |
Domanda
ho uno strano problema: voglio generare un nuovo file audio da due files audio e silenzio
.sound1: 2 secondi lunghi + Silenzio: 2 secondi di silenzio + SOUND2: lungo 2 secondi
Quando provo il codice qui sotto, ho un 6 secondi lungo 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). Si tratta di un comportamento tipico o faccio qualcosa di sbagliato?
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!
A proposito: seguente codice senza insertEmptyTimeRange linea non funziona neanche, esso genera solo 4 secondi di audio e Sound2 diapositive 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 è consentito che non c'è "nulla" tra i segmenti!?
Soluzione
Ancora non so cosa questo significa "insertEmptyTimeRange". Ho fatto un giro di lavoro con un file -audio "silenzio" che non ha nulla in esso. 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 ...)
Altri suggerimenti
ho preso a lavorare 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];
I bisogni "Intervallo di tempo vuoto" essere (2,4) se i vostri suoni sono da (0,2) e (4,6).
Non sono sicuro se il suo ritardo,
insertEmptyTimeRange:. Se si inserisce un intervallo di tempo vuoto nella traccia, qualsiasi supporto che è stata presentata durante tale intervallo prima dell'inserimento saranno presentati invece immediatamente 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-4)