概要
AVAssetExportSessionを使った動画出力に関するコードを書いていたところ、以下のエラーが発生した。
Error Domain=AVFoundationErrorDomain Code=-11821 "Cannot Decode" UserInfo=0x7fea915d4ed0 {NSLocalizedDescription=Cannot Decode, NSLocalizedFailureReason=The media data could not be decoded. It may be damaged.}
実機だと動くが、シミュレータだと動かない。
やったこと
- 修正前のソースコード
AVAssetExportSession * session = [[AVAssetExportSession alloc] initWithAsset:composition presetName:AVAssetExportPresetHighestQuality];
session.outputFileType = AVFileTypeMPEG4;
- 修正後のソースコード
AVAssetExportSession * session = [[AVAssetExportSession alloc] initWithAsset:composition presetName:AVAssetExportPresetPassthrough];
session.outputFileType = AVFileTypeMPEG4;
変更したのは、引数のpresetName
に指定する値。
エンコードしないよう、AVAssetExportPresetPassthrough
を指定した。
memo
Presetの値は、以下を参考にした。
https://developer.apple.com/jp/documentation/AVFoundationPG.pdf