Pergunta

Eu tenho um problema estranho: quero gerar um novo arquivo de som de dois arquivos de som e silêncio.

som1: 2 segundos de comprimento + silêncio: 2 segundos silêncio + som2: 2 segundos de duração

Quando tento o código abaixo, recebo um arquivo sonoro de 6 segundos com todas as partes, mas em uma ordem diferente! A ordem é: Sound1, Sound2, silêncio

Não consigo colocar esse silêncio no meio desta composição (também não no início). Isso é um comportamento típico ou algo errado?

Aqui está o código para montar os segmentos:

[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];

Talvez alguém tenha uma ideia? Agradeço antecipadamente!

A propósito: o código seguinte sem a linha de inserção detimeseRange também não funciona, ele gera apenas 4 segundos de slides de som e som2 até o final do som1:

    [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];

Parece que não é permitido que não haja "nada" entre os segmentos!?

Foi útil?

Solução

Ainda não sei o que significa esse "insertemptytimerange". Fiz uma contorna com um arquivo de "silêncio" -udio que não tem nada. Coloquei esse arquivo de áudio vazio entre os dois arquivos de som e isso faz isso por mim. Pergunta fechada;) (mas se alguém pudesse explicar esse "insertemptytimerange", isso ainda seria interessante ...)

Outras dicas

Eu consegui funcionar da seguinte maneira:

[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];

O "intervalo de tempo vazio" precisa ser (2,4) se seus sons forem de (0,2) e (4,6).

Não tenho certeza se está atrasado,

InsertEmptyTyTeRange: Se você inserir um intervalo de tempo vazio na pista, qualquer mídia apresentada durante esse intervalo antes da inserção será apresentada imediatamente depois.

Então, tudo o que você precisa fazer é adicionar os dois clipes primeiro e depois adicionar o intervalo de tempo vazio no tempo 2. Isso deve funcionar

inserttimerange (0 a 2)
inserttimerange (2 a 4)
insertemptytimerange (2 a 4)

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