одновременное транскодирование - PullRequest
1 голос
/ 12 января 2012

Я начинаю с xuggle и хочу перекодировать видео в различные форматы / качества.Как новичок я хотел бы использовать Xuggle MediaTool.Поскольку мне нужно сделать это эффективно, я хочу обрабатывать каждый целевой формат в отдельном потоке.Какой правильный шаблон параллелизма для этого случая?

Допустим, у меня есть file.avi, и я хотел бы перекодировать его в .flv и .mov.Мне интересно, запускает ли xuggle потоки для каждого Writer в следующем случае:

IMediaReader reader = ToolFactory.makeReader("file.avi");
reader.addListener(ToolFactory.makeWriter("file.flv", reader));
reader.addListener(ToolFactory.makeWriter("file.mov", reader));
while (reader.readPacket() == null){}

Или, может быть, мне следует начать преобразование для каждого формата в отдельном потоке?

(код: Введение в MediaTool )

1 Ответ

4 голосов
/ 18 января 2012

Xuggle не запускает никаких потоков (1), и вы сами можете управлять потоками.Кроме того, объекты Xuggle не являются поточно-ориентированными - вы должны сами контролировать доступ.

Однако, прежде чем добавлять несколько потоков, может стоить измерить производительность из коробки.Многопоточность на многоядерном компьютере определенно ускорит кодирование, но вам может не понадобиться это преимущество.

Art

(1) Не совсем верно, но в вашем случае Xuggle не запускаетсяпотоки.Xuggle будет (начиная с версии 4.0) самое большее запустить еще один поток, который он использует для очистки памяти.

...