LGPL Xuggle: ConverterFactory.createConverter не поддерживается
Я использую Xuggle для создания потока mpeg-ts. Все работало хорошо, пока я не понял, что я использую версию ffmpeg под GPL, чего я не могу.
Поэтому я перекомпилировал всю библиотеку и удалил флаги --enable-nonfree и --enable-gpl из ffmpeg.
Дело в том, что теперь мой код выдаст мне ошибку.
Рассматриваемые строки:
image = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
IVideoPicture outFrame = ConverterFactory.createConverter(image, IPixelFormat.Type.YUV420P).toPicture(image, timeStamp);
И ошибка, которую я получаю,
java.lang.UnsupportedOperationException: Converter class com.xuggle.xuggler.video.BgrConverter constructor failed with: java.lang.IllegalArgumentException: IVideoResampler not supported in this build
at com.xuggle.xuggler.video.ConverterFactory.createConverter(ConverterFactory.java:347)
Дело в том, что мы использовали один и тот же код с версией 3.3 Xuggle, и хотя ffmpeg выдавал нам предупреждения о том, что у нас нет аппаратного ускорения, все работало нормально.
Так что-то важное изменилось между этими версиями? И как я могу это преодолеть? Я искал в архиве, но пока не смог найти связанных вопросов.
Спасибо!
1 ответ
Проблема в том, что преобразователь цветового пространства, связанный с FFmpeg в Xuggle 3.x, активен ТОЛЬКО в режиме GPL. Почему FFmpeg это делает, я не знаю. Но это означает, что если вы не можете использовать версию FFmpeg под GPL, то вы не можете использовать конвертер цветового пространства в Xuggle (поскольку это то, что мы используем).