Я разработал приложение iOS, которое сохранит записанные данные камеры в файл, и я использовал
(void) captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
для захвата CMSampleBufferRef, и он будет кодироваться в формате H264, а кадры будут сохранены в файл с помощью AVAssetWriter.
i последовал за исходным кодом образца, чтобы создать это приложение:
http://www.gdcl.co.uk//2013/02/20/iOS-Video-Encoding.html
Теперь я хочу получить временную метку сохраненных видеокадров для создания нового видеофайла,
для этого я сделал следующие вещи
1) найдите файл и создайте AVAssestReader
для чтения файла
CMSampleBufferRef sample = [asset_reader_output copyNextSampleBuffer];
CMSampleBufferRef buffer;
while ( [assestReader status]==AVAssetReaderStatusReading ){
buffer = [asset_reader_output copyNextSampleBuffer];
//CMSampleBufferGetPresentationTimeStamp(buffer);
CMTime presentationTimeStamp = CMSampleBufferGetPresentationTimeStamp(buffer);
UInt32 timeStamp = (1000*presentationTimeStamp.value) / presentationTimeStamp.timescale;
NSLog(@"timestamp %u",(unsigned int)timeStamp);
NSLog(@"reading");
// CFRelease(buffer);
напечатанное значение дает мне неправильную метку времени, и мне нужно получить отснятое время кадра.
Есть ли способ получить метку времени захвата кадра,
Я прочитал следующую ссылку, чтобы получить ее timestamp, но она не уточняет мой вопрос выше Как установить метку времени CMSampleBuffer для записи в формате AVWriter
update
Я прочитал образец времени перед его записью в файл, он дал мне значение xxxxx (33333.23232)
после того, как я попытался прочитать файл, он дал мне другое значение, любая конкретная причина для этого?