【问题标题】:AVMutableCompositionTrack - insertTimeRange - insertEmptyTimeRange issueAVMutableCompositionTrack - insertTimeRange - insertEmptyTimeRange 问题
【发布时间】:2014-06-05 20:31:27
【问题描述】:

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

sound1:2 秒长 + 静音:2秒静音 + sound2: 2 秒长

当我尝试下面的代码时,我得到了一个包含所有部分的 6 秒长的声音文件,但顺序不同!顺序为:sound1、sound2、静音

我不能把这种沉默放在这个作品的中间(也不能放在开头)。这是典型的行为还是我有什么问题?

下面是把段放在一起的代码:

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

似乎不允许段之间有“无”!?

【问题讨论】:

    标签: iphone audio avfoundation


    【解决方案1】:

    仍然不知道这个“insertEmptyTimeRange”是什么意思。我解决了一个“静音”音频文件,其中没有任何内容。我把这个空的音频文件放在两个声音文件之间,这对我有用。问题已结束;) (但如果有人可以解释这个“insertEmptyTimeRange”,这仍然很有趣......)

    【讨论】:

    • 你在导出作文时是否使用了透传模式?
    • 你是什么意思 - 直通模式?我有同样的问题。我要在空的时间范围内插入通过指令。
    【解决方案2】:

    我得到它的工作如下:

    [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)。

    【讨论】:

      【解决方案3】:

      不知道是不是晚了,

      insertEmptyTimeRange :如果您在轨道中插入一个空的时间范围,则在插入之前该时间间隔内呈现的任何媒体都将在之后立即呈现。

      所以您要做的就是先添加两个剪辑,然后在时间 2 添加空时间范围。 这应该工作

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多