2011-06-10 167 views
0

只是想了解,我可以用AVMutableAudioMix類做些什麼,一旦我將PlayerItems(Assets)插入到AudioMix中,我可以在同一時間播放它們中的一個,或者其中一些播放器使用AVPlayer並動態更改參數?AVMutableAudioMix簡單問題

回答

3

我想你可能會錯誤地將其視覺化。 AVMutableAudioMix實例實際上是AVPlayerItem類中的一個property。首先使用tracksWithMediaType:獲取資產的軌跡,並使用audioMixInputParametersWithTrack:創建AVMutableAudioMixInputParameters實例。在該輸入參數實例上設置任何音頻屬性(例如setVolume:atTime)。

然後您需要將輸入參數添加到AVMutableAudioMix實例。然後你需要把它添加到一個球員項目。我知道這聽起來令人困惑,但這正是AVFoundation如何處理一切事情。各地都有條款,但幾乎所有的東西都有層次結構。

所以一般的層次是這樣的:player-> playerItem-> audioMix-> inputParameters。該代碼斜坡下降從5到7秒大關的體積應該是這個樣子:

AVAssetTrack *audioTrack = [[self.player.currentItem.asset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0]; 
AVMutableAudioMixInputParameters *params = [AVMutableAudioMixInputParameters audioMixInputParametersWithTrack:audioTrack]; 
[params setVolumeRampFromStartVolume:1.0 toEndVolume:0.5 timeRange:CMTimeRangeMake(CMTimeMake(5,1), CMTimeMake(2,1))]; 

AVMutableAudioMix *audioMix = [AVMutableAudioMix audioMix]; 
audioMix.inputParameters = [NSArray arrayWithObject:params]; 

self.player.currentItem.audioMix = audioMix; 

至於動態這樣做,你可以,但只能與本地文件(而不是從互聯網上的流)。我可能會嘗試將這個audioMix保存爲ivar,並且每次你想要發生某些事情時都嘗試重新設置params。如果這不起作用,您可能不得不每次都創建一個AVMutableAudioMix的實例,不確定。

另請參閱this postthis