塊的示例代碼從這裏:http://www.gdcl.co.uk/2013/02/20/iPhone-Pause.html CMSampleBufferRef樣品 - 是您sampleBuffer,CMSampleBufferRef SOUT你的輸出。 NewTimeStamp是你的時間戳。
CMItemCount count;
CMTime newTimeStamp = CMTimeMake(YOURTIME_GOES_HERE);
CMSampleBufferGetSampleTimingInfoArray(sample, 0, nil, &count);
CMSampleTimingInfo* pInfo = malloc(sizeof(CMSampleTimingInfo) * count);
CMSampleBufferGetSampleTimingInfoArray(sample, count, pInfo, &count);
for (CMItemCount i = 0; i < count; i++)
{
pInfo[i].decodeTimeStamp = newTimeStamp; // kCMTimeInvalid if in sequence
pInfo[i].presentationTimeStamp = newTimeStamp;
}
CMSampleBufferRef sout;
CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault, sample, count, pInfo, &sout);
free(pInfo);
來源
2013-03-02 06:06:17
Laz
爲什麼當你對答案不感興趣時,你會問一個問題? – Sten 2013-02-14 11:17:17
我需要設置CMSampleBuffer的時間戳,因爲我想暫時記錄會話。我結束了使用CMSampleBufferCreateCopyWithNewTiming。我想知道是否有直接的方法來注入現有緩衝區的時間戳,所以我不需要複製它。 – 2013-02-17 10:52:07
我無法使用AVAssetWriterInputPixelBufferAdaptor,因爲它只適用於視頻流。 – 2013-02-17 14:14:18