Tôi đang ở trong AVCaptureSession và tôi cần biết số khung đang được chụp.AVCaptureXác định thời gian chính xác khi khung được chụp
Khi bắt đầu chụp, tôi sẽ đặt lại bộ đếm số khung thành không. Vì vậy, dấu thời gian của khung đầu tiên sẽ bằng không. Các khung tiếp theo sẽ có các dấu thời gian chụp như thế này, ví dụ:
0
0.033
0.066
0.099
etc
nhưng đây không phải là con số chính xác, vì khung có thể bị giảm và sự khác biệt nhỏ có thể xảy ra. Tôi cần biết chính xác thời gian khi một khung hình được chụp.
tôi có phương pháp này được gọi là mỗi khi một khung được nắm lấy ...
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
bên trong phương pháp này tôi có thể có được CMTime của một khung và in nó ra cửa sổ Console sử dụng:
CMTime timestamp = CMSampleBufferGetPresentationTimeStamp(sampleBuffer);
NSLog(@"%lld", timestamp.value);
nhưng điều này sẽ cung cấp cho tôi số hoang dã như
156317265588132
156317307247388
156317348909678
156317390573453
156317432230603
sự khác biệt giữa một num ber và tiếp theo là khoảng 41,659,256 mà dường như không đại diện cho một thời gian trong vài giây với số thập phân khi khung được lấy.
nếu tôi chia số này bằng các khoảng thời gian, sử dụng
NSLog(@"%lld", timestamp.value/timestamp.timescale);
những con số sẽ giống nhau cho 25 khung hình và sẽ chỉ thay đổi khi một giây đầy đủ là đạt.
Làm cách nào để có được dấu thời gian chính xác tính bằng số giây với số thập phân khi khung được chụp? cảm ơn.
tôi đã cố gắng để có được, giá trị này, nhưng nó đã cho tôi một giá trị sai không dấu thời gian hiện tại –
CMTimeGetSeconds (timestamp) – Sten