###H264エンコードされたデータをデコードして表示した
https://mobisoftinfotech.com/resources/mguide/h264-encode-decode-using-videotoolbox/
を参考にVideoToolboxを利用してH264エンコード・デコードをしています。
renderメソッドまでエラーなく処理できていますがAVSampleBufferDisplayLayerのenqueueSampleBufferで
エラーとなり画像を表示できません。
AVSampleBufferDisplayLayerはViewのLayerにaddSubLayerしています。
###発生している問題・エラーメッセージ
Ignoring enqueueSampleBuffer: because status is "fail
###該当のソースコード
Objective
1--- 2 self.videoLayer = [[AVSampleBufferDisplayLayer alloc] init]; 3 self.videoLayer.videoGravity = AVLayerVideoGravityResizeAspect; 4 self.videoLayer.frame = CGRectMake(0, 0, 100, 100); 5 [view.layer addSublayer:self.videoLayer]; 6--- 7 if (_videoLayer) { 8 NSLog(@"Success ****"); 9 [_videoLayer enqueueSampleBuffer:sampleBuffer]; 10 }
###試したこと
CFDictionarySetValue(dict, kCMSampleBufferAttachmentKey_EmptyMedia, kCFBooleanTrue); CFDictionarySetValue(dict, kCMSampleAttachmentKey_IsDependedOnByOthers, kCFBooleanTrue);
よろしくお願いいたします。
###追記
sampleBufferが正しいかというご指摘がありましたので追記いたします。
何を持って正しいと判断するのかわかっていないのですが、エンコード時には全て正常に処理できております。
デコード時にもnalu_typeは7->8と順に処理できており、spsSize、ppsSizeも取得できています。
何か他に正しいか判断できる方法があれば合わせてご教授いただけませんでしょうか。
あなたの回答
tips
プレビュー