답변:
1) CMTimeMake(1,10)
실제로 1 의 값과 10의 시간 척도를 의미합니다. 분자와 분모이므로 1 초가 아닌 1/10 초입니다.
2) 결과는 CMTimeMake(2, 10)
2/10 초입니다.
value/timescale = seconds
명시 적으로 말합니다 .
피터가 맞아 다음 코드는 개념을보다 명확하게 만듭니다.
1)
Float64 seconds = 5;
int32_t preferredTimeScale = 600;
CMTime inTime = CMTimeMakeWithSeconds(seconds, preferredTimeScale);
CMTimeShow(inTime);
위 코드는 {3000/600 = 5.000}입니다.
이는 총 600 초의 시간 간격을 가진 3000 개의 프레임으로 총 5 초의 지속 시간을 의미합니다.
2)
int64_t value = 10000;
int32_t preferredTimeScale = 600;
CMTime inTime = CMTimeMake(value, preferredTimeScale);
CMTimeShow(inTime);
이것은 {10000/600 = 16.667}을줍니다.
이는 초당 600 프레임의 시간 단위를 가진 10000 개의 프레임으로 총 16.667 초를 의미합니다.
CMTimeMake (int64_t 값, int32_t 타임 스케일)와 CMTimeMakeWithSeconds (Float64 초, int32_t preferredTimeScale)의 차이점에 유의하십시오.
이 설명이 도움이 되길 바랍니다. 더 자세한 설명을 원하시면 언제든지이 게시물에 추가 질문을 게시하십시오.
setMaxRecordedDuration
합니다 . 모두가 맹목적으로 600을 사용하고 있으며 정확히 무엇을하는지에 대한 좋은 설명이 없습니다. preferredTimeScale
frame_rate
CMTime 구조체는 length of time that is stored as rational number.
CMTime에 값과 시간 범위 필드가 있고 시간 값 / 시간 단위 초를 나타냅니다.
CMTimeMake(1, 48)
1/48 초마다 코드 블록을 실행합니다. 즉 프레임 당 1 블록