我有一个奇怪的问题:我想用两个声音文件和静音生成一个新的声音文件。
声音1:2秒长 + 沉默:2秒沉默 + sound2:2秒长
当我尝试下面的代码时,我得到一个包含所有部分的6秒长声音文件,但顺序不同!顺序是:sound1,sound2,silence
我无法将这种沉默放在这个构图的中间(也不是在开头)。这是典型的行为还是我做错了什么?
以下是将段放在一起的代码:
[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-line的代码也不起作用,它只会产生4秒的声音和声音2滑动到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];
似乎不允许各段之间存在“无”!?
答案 0 :(得分:1)
仍然不知道这个“insertEmptyTimeRange”是什么意思。我做了一个“沉默”-audio文件,其中没有任何内容。我把这个空音频文件放在两个声音文件之间,这对我来说。问题已结束;) (但如果有人能够解释这个“insertEmptyTimeRange”,这仍然会很有趣......)
答案 1 :(得分:1)
我按照以下方式开展工作:
[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)。
答案 2 :(得分:0)
不确定是否迟到了,
insertEmptyTimeRange:如果您在轨道中插入一个空的时间范围,那么在插入之前的那段时间内呈现的任何媒体都将在之后立即显示。
所以你要做的就是先添加两个剪辑,然后在时间2添加空时范围。 这应该工作
insertTimeRange(0到2)
insertTimeRange(2到4)
insertEmptyTimeRange(2到4)