Сжатие видео без потерь OpenCL

Я ищу сжатие видео без потерь в OpenCL. Это должно быть без потерь, так как это требование проекта. Нашел несколько алгоритмов без потерь, написанных на OpenCV и ffmpeg, но ни один из них не поддерживает кодирование/декодирование OpenCL. Я использую компьютеры Apple, и они поставляются с графической картой ATI, которая не поддерживает CUDA.

Любая помощь будет принята с благодарностью.


person Arash    schedule 05.11.2015    source источник


Ответы (2)


Вы можете использовать x264, который уже поддерживает OpenCL, и использовать CRF 0 (без потерь). Я знаю, похоже, что mpeg4 всегда с потерями, но оказывается, что у него также есть режим без потерь, который в большинстве случаев работает лучше, чем другие кодеки без потерь.

avconv -i input -c:v libx264 -preset slow --opencl -crf 0 -c:a copy outvideo.mp4

OpenCL в x264 немного быстрее обычного процессора, поэтому он не получил широкого распространения. EDIT: в моей системе моя libx264 не принимает --opencl, но я думаю, что никогда версии не принимают этот параметр. Возможно, вам понадобится двоичный исполняемый файл «x264», поскольку libx264 может не раскрывать все базовые функции.

person DarkZeros    schedule 06.11.2015
comment
Наше приложение очень интенсивно использует ЦП, если я могу выгрузить часть обработки на ГП, это было бы здорово. Я дам ваш ответ, попробуйте и дайте вам знать. Спасибо - person Arash; 06.11.2015
comment
О, хорошо, в таком случае это может помочь. x264 будет балансировать нагрузку, поэтому, вероятно, рекомендуется оставить x264 на одном ядре ЦП + ГП, чтобы использовать большую часть устройства ГП. - person DarkZeros; 06.11.2015
comment
Я хочу преобразовать файлы png в видео, у ffmpeg такая же проблема, не принимает --opencl с libx264. Вы знаете, как это сделать с x264? - person Arash; 07.11.2015
comment
У вас есть двоичные файлы x264 download.videolan.org/pub/x264/binaries. Чтобы загрузить png, вам нужно будет ввести %05d.png для png, например 00001.png .... - person DarkZeros; 07.11.2015

Маловероятно, что вы найдете что-то, что уже существует, реализованное в OpenCL для этой задачи сжатия видео без потерь. Лучше всего было бы взять что-то, что уже существует, а затем попытаться адаптировать это, но базовый подход OpenCL заключается в разделении вычислительных задач на разные потоки, которые работают с небольшими участками памяти. Вы можете взглянуть на WebM в качестве отправной точки.

person MoDJ    schedule 05.11.2015