2012-01-14 6 views
1

AVCompositionトラック(ビデオ用のオーディオトラック)をフェードアウトしようとしています。AVMutableAudioMix - フェードアウトできません

私はそれを最初にフェードアップすることはできますが、最後にフェードアウトするのに多くの問題があります。ここに私のコードは次のとおりです。

AVMutableAudioMixInputParameters *audioMixParameters = [AVMutableAudioMixInputParameters audioMixInputParametersWithTrack:compositionAudioTrack]; 

[audioMixParameters setVolume:0.0 atTime:kCMTimeZero]; 
[audioMixParameters setVolumeRampFromStartVolume:0.0 toEndVolume:1.0 timeRange:CMTimeRangeMake(kCMTimeZero, CMTimeMake(150, kVideoFPS))]; 

CMTime fadeOutBegin = CMTimeMake((length - 5) * kVideoFPS, kVideoFPS); 
[audioMixParameters setVolumeRampFromStartVolume:1.0 toEndVolume:0.0 timeRange:CMTimeRangeMake(fadeOutBegin, totalDuration)]; 

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

lengthは秒でのビデオの長さであるNSUIntegerです。

totalDurationkVideoFPS

kVideoFPSのタイムスケールで総ビデオの再生時間のCMTIMEが30

私の目標は、組成物の端から5秒フェードアウトを開始する値で一定であります。私はCMTimeMakeWithSecondsのようなあらゆる種類のものを試しました。私はフェードインの値を逆にして、うまく動作します(最初にボリュームを1.0から0.0にフェードアウト)。

大変ありがとうございます!

+0

あなたは長さが5秒以上であることを確認していますか? – Till

+0

はい - 長さは可変ですが、少なくとも17秒です。 – gamblor87

+0

この解決策を見つけましたか? –

答えて

0

CMTimeRangeMakeの2番目のパラメータはCMTimeRangeの持続時間である、時間範囲(ref)の終了時刻ではない:

CMTimeRange CMTimeRangeMake(CMTime start, CMTime duration);

は、組成物の最終5秒間のフェードアウトするために、これを試してください:ストリーミングメディアとと一緒にAVAudioMix/AVMutableAudioMixを使用して、トラブルに実行している人のために

CMTime fadeOutEnd = CMTimeMake(5 * kVideoFPS, kVideoFPS); 
[audioMixParameters setVolumeRampFromStartVolume:1.0 toEndVolume:0.0 timeRange:CMTimeRangeMake(fadeOutBegin, fadeOutEnd)]; 
関連する問題