2

オーディオ トラック (AVAudioRecorder で録音) をコンポジションに追加した後、AVPlayer はそれを再生しません。AVPlayer.status = 1 および AVPlayer.error = null。

WWDC10 AVEdit のデモ コードを見てきましたが、かなり似ています。オーディオフォーマットの非互換性でしょうか?

元のコンポジションには、ビデオ アセットのビデオとオーディオ トラックがすでに含まれています。

新しく追加されたオーディオ トラックを削除しても、プレーヤー再生する元のオーディオ トラックを削除しても再生されません。

また、問題を指摘するデバッグ情報を取得するのも難しいと感じています。誰かに提案があれば、それは大歓迎です。

これがオーディオトラックを追加するための私のコードです

どんな助けでも大歓迎です

ジャンピエール

-(void)editAudioViewController:(EditAudioViewController *)editAudioViewController didEditAudio:(NSURL *)url
{
[self dismissModalViewControllerAnimated:TRUE];

BOOL result;
NSError * error = nil;

if (url)
{
    AVURLAsset * asset = [AVURLAsset URLAssetWithURL:url options:nil] ;

    CMTimeRange audioTimeRange = CMTimeRangeMake(kCMTimeZero , asset.duration);
    if (CMTIME_COMPARE_INLINE(CMTimeRangeGetEnd(audioTimeRange), >, [composition duration]))
        audioTimeRange.duration = CMTimeSubtract([composition duration], audioTimeRange.start);

    AVMutableCompositionTrack *compositionAudioTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio
                                    preferredTrackID:kCMPersistentTrackID_Invalid];

    AVAssetTrack *audioTrack = [asset compatibleTrackForCompositionTrack:compositionAudioTrack];

    result = [compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, audioTimeRange.duration) ofTrack:audioTrack atTime:audioTimeRange.start error:&error];

    if (!result)
    {
        NSLog(@"%@", [error description]);
    }

    [mp replaceCurrentItemWithPlayerItem:[AVPlayerItem playerItemWithAsset:composition]];
    [mp seekToTime:kCMTimeZero];

}
}
4

1 に答える 1

1

オーディオ レコーダー コードには、録音用と再生用の 2 つの個別のセッションがありました。単一の記録/再生セッションに切り替えたところ、これで問題が解決しました。

audioSession = [AVAudioSession sharedInstance];

if (!audioSession.inputIsAvailable)
{
    NSLog(@"No input available");
}

[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];

NSError * error = nil;

[audioSession setActive:TRUE error:&error];

if (error)
{
    NSLog(@"%@", [error description]);
}
于 2011-03-15T15:51:47.350 に答える