基本的に、Apple が提供する 2 つのエンコーダー、h264 または avc1 と jpeg があります。
let settings:[String:AnyObject] = [
AVVideoCodecKey: AVVideoCodecJPEG,
AVVideoWidthKey: 720,
AVVideoHeightKey: 1280,
AVVideoQualityKey: 0.5
]
//Line below is where the compilation error happened
VideoInput = AVAssetWriterInput(mediaType: AVMediaTypeVideo, outputSettings: settings)
VideoInput.expectsMediaDataInRealTime = true
assetWriter.addInput(VideoInput)
ここで、辞書から AVVideoQualityKey:0.5 を削除すると、完全に実行されます。鍵付き?いいえ。以下に引用されているエラー メッセージによるコンパイル エラーです。
出力設定ディクショナリには無効なキーが 1 つ以上含まれています: Quality'
辞書に AVVideoQualityKey がない場合、最終的なムービー ファイルは mjpeg エンコーダーでエンコードされました。大きすぎるので、jpeg の品質キーを 0.5 に設定する必要があります。
別の方法として、samplebuffer を処理して cvpixelbuffer に変換し、自分でエンコードしてから元に戻して、assetwriter で書き込む方法を考えました。しかし、AVVideoQualityKey を使用できればエンコーディングがハードウェア アクセラレーションされると確信しているため、あまり効率的ではないようです。