Какая библиотека лучше Transcoder для живой камеры? ffmpeg против Intel Media SDK

Я хотел бы сравнить производительность Ffmpeg и Intel Media SDK при транскодировании.

Мне нужно написать новое приложение, которое будет делать следующее.

  1. Получайте кадры с камер MJPEG, MPEG4 и H264.

  2. Перекодируйте кадры. Вывод будет h264. Здесь мне нужно либо использовать Ffmpeg, либо Intel Media SDK.

  3. Многоадресные перекодированные кадры в виде потоковой передачи RTSP.

Я заметил, что обе эти библиотеки интенсивно используют ЦП. Есть ли какие-либо настройки в Ffmpeg, которые могут снизить загрузку процессора?

Заранее спасибо,


person OrionSoftTechnologiesSydney    schedule 04.12.2013    source источник
comment
Чтобы получить максимальную производительность, вы можете использовать специальное оборудование, которое может быть довольно дорогим. Более скромный подход заключается в использовании универсального графического процессора, например. через OpenCL. К сожалению, я не могу указать на библиотеку производственного качества, отвечающую вашим требованиям, и ни в коем случае такой транскодер не может вписаться в строгий формат SO-ответа.   -  person Alex Cohn    schedule 04.01.2017


Ответы (1)


Как и при любом кодировании мультимедиа, вы поменяете скорость на качество. x264 (ffmpeg) будет создавать более высокое качество (или файлы меньшего размера при том же качестве), но будет использовать больше ресурсов ЦП. Intel Media SDK должен использовать очень мало ЦП, но качество будет немного хуже. Это достигается за счет использования специализированного оборудования на ЦП, если ваш ЦП поддерживает это.

Итак, что лучше? Это зависит от того, что вы хотите оптимизировать для ЦП, энергопотребления, качества или размера файла.

person szatmary    schedule 04.12.2013
comment
Привет, Сатмари! Большое спасибо за ответ. Я протестировал оба и заметил, что оба почти используют один и тот же процессор. В случае с Ffmpeg для каждого процесса требуется 15% ресурсов ЦП, и он является линейным (каждый процесс занимает 15%). Intel Media SDK, для первого потребовалось 20%, для второго - 15%, для третьего - 10% (уменьшается, когда я увеличиваю количество камер). Вы знаете, в чем причина этого. Также есть ли какая-либо опция командной строки в Ffmpeg для управления использованием ЦП? - person OrionSoftTechnologiesSydney; 04.12.2013
comment
Существует множество параметров командной строки. (trac.ffmpeg.org/wiki/x264EncodingGuide) - person szatmary; 04.12.2013
comment
Привет szatmary, у меня есть одно сомнение в той же строке. Может ли Intel Media SDK перекодировать поток mpeg4 в режиме реального времени с камеры в поток h264? - person OrionSoftTechnologiesSydney; 10.12.2013
comment
@ user3044783 Я не знаю, может ли он декодировать mpeg4. Но если это невозможно, вы всегда можете декодировать программно, а затем кодировать AVC аппаратно. Декодирование HD-потока может занимать значительное количество ресурсов ЦП, но все же это намного меньше, чем кодирование. - person szatmary; 10.12.2013
comment
Большое спасибо за ваш совет. Мне нужно одно уточнение, что вы подразумеваете под декодированием в программном обеспечении? Вы предлагаете использовать Ffmpeg для потоков mpeg4 и Intel Media SDK для потоков MJPEG и H264? - person OrionSoftTechnologiesSydney; 10.12.2013
comment
Транскодирование — это процесс с двумя остановками. Декодируйте исходный формат в необработанные кадры, затем кодируйте кадры в новый формат. Таким образом, вы можете использовать ffmpeg для декодирования, а затем Intel для кодирования. - person szatmary; 10.12.2013