Iphone AVMutableCompositionTrack-insertTimeRange-InsertEmptTimeRange问题

Iphone AVMutableCompositionTrack-insertTimeRange-InsertEmptTimeRange问题,iphone,audio,avfoundation,Iphone,Audio,Avfoundation,我有一个奇怪的问题:我想用两个声音文件和静音生成一个新的声音文件 声音1:2秒长 + 静默:2秒静默 + 声音2:2秒长 当我尝试下面的代码时,我得到了一个6秒长的声音文件,其中包含所有部分,但顺序不同!顺序是:声音1,声音2,安静 我不能把这个沉默放在这篇文章的中间(也不是在开始)。这是典型的行为还是我做错了什么 下面是将这些段放在一起的代码: [compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, [audio1

我有一个奇怪的问题:我想用两个声音文件和静音生成一个新的声音文件

声音1:2秒长 + 静默:2秒静默 + 声音2:2秒长

当我尝试下面的代码时,我得到了一个6秒长的声音文件,其中包含所有部分,但顺序不同!顺序是:声音1,声音2,安静

我不能把这个沉默放在这篇文章的中间(也不是在开始)。这是典型的行为还是我做错了什么

下面是将这些段放在一起的代码:

[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];
也许有人有主意?提前谢谢你

顺便说一下:下面没有insertEmptyTimeRange行的代码也不起作用,它只会生成4秒的声音,sound2会滑到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];

似乎不允许段之间“无”存在

仍然不知道这个“insertEmptyTimeRange”是什么意思。我做了一个“静默”的工作-音频文件中没有任何内容。我把这个空的音频文件放在两个声音文件之间,这就为我做到了。问题结束;)
(但如果有人能解释这个“insertEmptyTimeRange”,这仍然很有趣……

我的工作原理如下:

[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];
如果您的声音来自(0,2)和(4,6),“空时间范围”必须是(2,4)。

不确定是否太晚

insertEmptyTimeRange:如果在曲目中插入一个空的时间范围,则在插入之前的时间间隔内显示的任何媒体都将在插入之后立即显示

因此,您所要做的就是先添加两个剪辑,然后在时间2添加清空时间范围。 这应该行得通

插入时间范围(0到2)
插入时间范围(2到4)

insertEmptyTimeRange(2到4)

导出作文时是否使用了传递模式?您需要什么-传递模式?我也有同样的问题。我正在空时间范围内插入传递指令。