2010-10-24 28 views
5

我有一個奇怪的問題:我要生成一個新的聲音文件了兩次聲音文件和沉默。AVMutableCompositionTrack - insertTimeRange - insertEmptyTimeRange問​​題

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

看來,這是不允許段之間「沒有」!?

回答

1

還是不知道這是什麼「insertEmptyTimeRange」的意思。我用一個「沉默」 - 一個沒有任何內容的音頻文件來解決問題。我把這個空的音頻文件放在兩個聲音文件之間,這對我來說是這樣。問題已關閉;) (但是,如果有人可以解釋這個「insertEmptyTimeRange」這將是有趣還是...)

+0

導出組合物時是否使用了通過模式? – zoul 2011-01-06 14:30:00

+0

你是什麼意思 - 直通模式?我有同樣的問題。我會在空時間範圍內插入通過指令。 – comonitos 2012-07-04 14:22:38

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

0

不知道它的後期,

insertEmptyTimeRange:如果插入一個空的時間段進入軌道,這是該期間之前插入提出任何媒體都將呈現,而不是隨即。

因此,所有你需要做的就是先加兩個剪輯,然後添加在時間2 這應該工作

insertTimeRange(0-2)
insertTimeRange(2〜4)
的emptytime範圍insertEmptyTimeRange(2〜4)