Это зависит.Каков источник ваших кадров?Они поступают из источника в реальном времени, то есть с камеры, и затем обрабатываются каким-то образом?Или они просто генерируются из любого типа данных (и нет никакого давления в реальном времени от источника данных).
Ваш вопрос как-то предлагает последнее.Если это так, я предлагаю действительно запустить создание и запись на диск в разных потоках.На самом деле, это может быть даже больше, у вас может быть не только две задачи, но и три:
- Генерация данных изображения
- Кодирование видеоданных
- Записьвидеоданные на диск
Первое, похоже, не является вашим узким местом, поэтому я предлагаю запустить это и заполнить очередь до тех пор, пока вы не запустите ее выше определенного предела (чтобы избежать нехватки ОЗУ)) и просто подождите.
Вторая кодировка сжимает ваши данные за счет времени обработки.Как только изображения есть, это можно сделать независимо от поколения.Здесь есть большой выбор (от кодеков без потерь до кодеков с потерями с различными качествами), но это часто стоит делать.После этого вы можете хранить сжатые данные только в оперативной памяти, что сокращает использование оперативной памяти.С другой стороны, это, конечно, требует некоторой вычислительной мощности и (при условии, что она уже многопоточная) может замедлить создание данных.Итак, здесь вы можете сбалансировать размер данных и скорость генерации для наилучшего возможного баланса.
Наконец, запись на диск.Если вы пишете несжатые данные, это много.Если это сжато, не так сильно.Поскольку запись на диск часто бывает медленной, конечно, помогает запись меньшего количества данных.Кроме того, запись больших объемов данных более эффективна, чем запись небольших объемов данных.Поэтому сбор нескольких кадров и их одновременная запись могут сэкономить ваше время.
Здесь много винтов, которые можно оптимизировать.Похоже, ваша цель - как можно быстрее создать общую систему.Вопрос обычно в том, когда вкладывать в это работу.Если то, что вы разрабатываете, работает, и это просто производительность, вы можете пойти на это.Если вы просто обеспокоены этим, но то, что вы хотите сделать в конце концов, еще не сделано, я всегда советую сначала запустить его, а позже - быстрее.