October 29th, 2014

Avisynth + Linux: альтернативный вариант кодирования h264

По моей предыдущей статейке меня посетила идея, как можно улучшить совместимость Avisynth с Linux. Проблема в том, что не все фильтры хорошо работают под Wine. Некоторые вообще не работают, некоторые работают только на каких-то определённых версиях wine, а некоторые необъяснимо тормозят в wine.

Идея вообще-то проста и очевидна: запускать Avisynth вместе с avs2yuv в виртуалке, а для передачи видеопотока в Linux использовать netcat. Надо будет попробовать. Проблема пока видится только в автоматической передаче количества фреймов.

UPDATE. После проведения начальных экспериментов выяснилось, что имеется некоторое снижение производительности при передаче потока из виртуалки в Linux. Если программа avs2yuv в виртуалке генерирует поток примерно 18 Мб/сек, то после передачи его в Linux скорость снижается до 12 Мб/сек (скорость avs2yuv, запущенного из wine в линуксе - 20 Мб/сек). При этом, чтобы снизить накладные расходы, в виртуалке был установлен сетевой контроллер virtio. Увеличение рабочих процессоров виртуалки только снижает производительность, поэтому необходимо оставить только 1 процессор. Замеры производились утилитой dd.

В реальной ситуации такая скорость от потока может и не потребуется (хотя это зависит от параметров сжатия), но я всё же вижу теперь гораздо меньше смысла во всей этой затее. Проще уж и кодировать тогда прямо в виртуалке при проблемах с плагинами.