Thanks for you reply. I found the solution yestoday, after giving duration value for every video frame's CMSampleTimingInfo struct, this problem disappeared.
///// Code with Problem
CMSampleTimingInfo timingInfo;
timingInfo.presentationTimeStamp = CMTimeMake(pts_ms, 1000);
timingInfo.decodeTimeStamp = CMTimeMake(dts_ms, 1000);
size_t sampleSize[1] = { frame_size };
CMSampleBufferRef sampleBuffer;
status = CMSampleBufferCreate(kCFAllocatorDefault,
dataBlock,
true, // dataReady
NULL, // makeDataReadyCallback
NULL, // makeDataReadyRefcon
_videoFormatDescription,
1, // numSamples
1, // numSampleTimingEntries
&timingInfo, // CMSampleTimingInfo *sampleTimingArray
1, // numSampleSizeEntries
sampleSize, // sampleSizeArray
&sampleBuffer); //sampleBufferOut
///// Code without Problem
CMSampleTimingInfo timingInfo;
timingInfo.presentationTimeStamp = CMTimeMake(pts_ms, 1000);
timingInfo.decodeTimeStamp = CMTimeMake(dts_ms, 1000);
// ⬇️⬇️⬇️
timingInfo.duration = CMTimeMake(duration, 1000)
size_t sampleSize[1] = { frame_size };
CMSampleBufferRef sampleBuffer;
status = CMSampleBufferCreate(kCFAllocatorDefault,
dataBlock,
true, // dataReady
NULL, // makeDataReadyCallback
NULL, // makeDataReadyRefcon
_videoFormatDescription,
1, // numSamples
1, // numSampleTimingEntries
&timingInfo, // CMSampleTimingInfo *sampleTimingArray
1, // numSampleSizeEntries
sampleSize, // sampleSizeArray
&sampleBuffer); //sampleBufferOut