Итак, я пытаюсь захватить поток и записать его на куски по 30 секунд. Я не знаю, какой будет частота кадров в секунду у камеры, поэтому нужно учитывать, что я хочу снимать только 15 кадров в секунду.
Моя проблема в том, что следующие результаты дают фрагменты по 28 секунд вместо 30. . как мне правильно выбрать время?
Не совсем новичок в C++, но довольно заржавевший и никогда раньше не делал ничего подобного (обычно простой ввод-вывод или в контексте разработки игр начального уровня). )
вероятно, либо математические вычисления отключены, либо я делаю что-то, что вызывает задержку обработки, либо я просто слишком долго смотрел на это и упустил что-то очевидное (вероятно)
что я уже пробовал:
int frame_count = 0;
double frame_duration = 1.0 / currentCameraConfig.fps;
auto start_time = std::chrono::steady_clock::now();
while (true) {
cv::Mat frame;
if (!cap.read(frame)) {
break;
}
frame_count++;
auto now = std::chrono::steady_clock::now();
auto elapsed_time = std::chrono::duration_cast(now - start_time).count();
if (elapsed_time < 30) {
video_output.write(frame);
std::cout
Подробнее здесь: https://stackoverflow.com/questions/790 ... p-captures