Первое, что нужно рассмотреть, это то, куда вы хотите поместить свои внутренние кадры.Для лучшего сжатия вы должны выбрать это мудро, предпочитая, например, смену сцены в середине статической последовательности.Чтобы найти лучшие места, вам нужно проанализировать необработанное видео, что можно сделать за один дополнительный (дорогой) проход или решить на лету, когда вы кодируете.
Таким образом, чтобы разделить поток вКуски, которые вам либо нужно сделать дополнительный проход для анализа или просто произвольно разделить его и потерять некоторую эффективность сжатия.
Тогда вам нужно подумать о том, как у вас есть это сырое видео для кодирования.Либо это поток из вашей программы сжатия откуда-то, либо все это доступно на диске.
Если это поток, то вам не повезло, так как у вас нет произвольного доступа к различным частям потока.Да, вы можете буферизовать его, но быстрый расчет показывает, что для этого потребуется либо МНОГО памяти, либо вам придется буферизовать на диск, что приведет к следующему пункту:
Если у вас есть весь сыройфайл хранится локально, то вы можете разделить части на разные процессы или потоки.За исключением того, что теперь вашей проблемой будет доступ к диску!Учтите, что скорость передачи видео в формате 1080p, 24 кадра в секунду составляет около 4 ГБ в минуту.С единственным процессом, кодирующим это, диск будет сильно занят предоставлением необработанных данных.Это может быть даже самая медленная часть процесса (хотя, вероятно, нет, если ваш жесткий диск не очень фрагментирован!)
Теперь подумайте о том, чтобы 4 процесса получили доступ к одному и тому же файлу, все пытаясь получить необработанные данные вчрезвычайно высокие показатели.Этот жесткий диск просто не сможет поддерживать кодировщики данными - слабое звено будет не медленным процессором, а медленным доступом к данным.
Так что, если у вас нет действительно профессионального набора для храненияВаше несжатое видео, разделение различных секций для параллельного кодирования пока просто не практично.