6

私はAVFoundationオーディオのみを使用して作業しています。つまり、ビデオは使用せず、複数AVCompositionの を次々に結合して、1 つのAVComposition.

例: 2 つだけAVComposition。次のように AVPlayer を作成することで、それぞれが正常に再生されます。

_player = [AVPlayer playerWithPlayerItem:[AVPlayerItem playerItemWithAsset:comp]]

compインスタンスですAVMutableComposition。(ちなみに、_playerivar でなければならないことに注意してください。そうしないと、ARC は再生前に時期尚早にそれをリリースします - それを追跡するのにしばらく時間がかかりました。)

よかった - 実行中

[_player play]

comp正常に再生されます。

ただし、これは失敗します。

(のカスタム サブクラスでself.segmentsあるNSMutableArray要素を含むAVMutableComposition)

AVMutableComposition *comp = [AVMutableComposition composition];
NSError *err;
for (AVMutableComposition* c in self.segments) {
    [comp insertTimeRange:CMTimeRangeMake(kCMTimeZero, segment.duration)      
                  ofAsset:segment atTime:comp.duration error:&err];
    DLog(@"Error was %@", segment, err);
}

このコードが実行されたときのすべての要素について、メソッドself.segmentsを呼び出すときに次のエラーが発生します。insertTimeRange::::

Error was Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not
be completed" UserInfo=0x14e8e7f0 {NSLocalizedDescription=The operation could not be 
completed, NSUnderlyingError=0x14d7f580 "The operation couldn’t be completed. (OSStatus 
error -12780.)", NSLocalizedFailureReason=An unknown error occurred (-12780)}

このエラーが何を示しているかについての情報を見つけることができません。何か案は?

4

3 に答える 3

2

このコードエラーは対応してAVErrorUnknown = -11800いるため、問題の原因についての説明はあまりありません。https://developer.apple.com/documentation/avfoundation/averror/averrorunknown?language=objc

それが他の誰かを助けるかもしれない場合に備えて、ここで私の理由を指摘します.

環境

私の場合、Airplay に接続しようとするとエラーが発生しました。

原因

原因は、AVPlayer のインスタンスが 2 つあるためです。1 つはムービー タイプのビデオ用で、もう 1 つはプレビュー用です。その後、映画をキャストしようとしたときに... AVFoundation が混乱し、このエラーが発生していました。

解決

moviePlaybackインスタンスで:

allowsExternalPlayback = true
usesExternalPlaybackWhileExternalScreenIsActive = true

defaultインスタンスで:

allowsExternalPlayback = false
usesExternalPlaybackWhileExternalScreenIsActive = false
于 2021-01-15T16:26:13.157 に答える