0

AVMutableComposition と AVAssetExportSession などを使用して、音楽とビデオをマージしています (出力は mp4 です)

全体は問題なく動作しましたが、オーディオ ミックスを使用してフェード効果を追加しようとすると、エクスポートに失敗しました。

重要な場合にフェード効果を追加するためのコードフラグメントは次のとおりです

AVMutableAudioMix* exportAudioMix = nil;
if(CMTimeCompare(videoAsset.duration, CMTimeMakeWithSeconds(2, 25)) == 1) {
    exportAudioMix = [AVMutableAudioMix audioMix];
    AVMutableAudioMixInputParameters *mixParam 
        = [AVMutableAudioMixInputParameters audioMixInputParametersWithTrack:compositionAudioTrack];
    for(int i = 0; i <= 5; i++) {
        CMTime t = CMTimeMake(i * 5 , 25);
        [mixParam setVolume:0.2 * i atTime:t];
        [mixParam setVolume:0.2 * (5 - i) atTime:CMTimeAdd(videoAsset.duration, t)];
    }
    exportAudioMix.inputParameters = @[mixParam];
}
_assetExport.audioMix = exportAudioMix;//export won't fail if I remove this line

setVolumeRamp を使用しようとしましたが、機能しませんでした (エクスポートできません)。同じように動作する setVolume に変更しました。だから私は問題がそこにあるべきではないと信じています。

4

1 に答える 1