Как вы получаете FFMPEG для кодирования с помощью vaapi?

Я видел различные примеры использования libavcodec с vaapi для ускоренного декодирования, но как вы его используете для ускорения кодирования?

+2
23 сент. '14 в 16:55
источник поделиться
3 ответа

На сегодняшний день FFmpeg и libav реализовали аппаратное ускорение кодирования через VAAPI на поддерживаемых платформах и аппаратных SKU, и я написал запись на том же самом, что позволит вам настроить, развернуть и использовать как ffmpeg, так и libav для достижения тот же эффект.

И в той же заметке я добавил ссылки на пределы аппаратной поверхности, чтобы вы знали, какие аппаратные платформы поддерживают определенные видеокодеки для использования с кодировкой VAAPI.

Ниже приводится пошаговое описание сборки FFmpeg, загружаемой через систему модулей окружения:

Создание FFmpeg с поддержкой VAAPI с поддержкой VP8/9 для декодирования и кодирования аппаратного ускорения на тестовом стенде Skylake в качестве примера:

Построить платформу: Ubuntu 16.04LTS.

Первое:

Сначала создайте цепочку зависимостей.

  1. cmrt:

Это Cernel Manager для Runtime GPU для семейства Intel G45 и HD Graphics. это предпосылка для создания пакета intel-hybrid-driver.

git clone https://github.com/01org/cmrt
cd cmrt
./autogen.sh
./configure
time make -j$(nproc) VERBOSE=1
sudo make -j$(nproc) install
sudo ldconfig -vvvv
  1. intel-hybrid-driver:

Этот пакет обеспечивает поддержку кодеков VPM WebM project. Ускорение GPU обеспечивается с помощью ядер мультимедиа, выполняемых на графических процессорах Intel GEN. Гибридный драйвер обеспечивает энтропию, связанную с процессором (например, CPBAC), и управляет параметрами и буферами медиа-ядра GEN GPU.

Это предпосылка для создания libva с желаемой конфигурацией, поэтому мы можем получить доступ к гибридным возможностям декодирования серии VPX в поддерживаемых конфигурациях оборудования.

git clone https://github.com/01org/intel-hybrid-driver
cd intel-hybrid-driver
./autogen.sh
./configure
time make -j$(nproc) VERBOSE=1
sudo make -j$(nproc) install
sudo ldconfig -vvv
  1. intel-vaapi-driver:

Этот пакет обеспечивает драйвер пользовательского режима VA-API (Video Acceleration API) для семейств SKU для семейств Intel GEN Graphics. Текущая версия видеодрайвера обеспечивает мост к GEN GPU через упаковку буферов и команд, которые должны быть отправлены драйверу i915 для использования как аппаратных, так и шейдерных функций для декодирования, кодирования и обработки видео. он также предоставляет оболочку для Intel-гибридного драйвера при вызове для обработки гибридных задач декодирования VP8/9 на поддерживаемом оборудовании (должен быть настроен с параметром --enable-hybrid-codec).

git clone https://github.com/01org/intel-vaapi-driver
cd intel-vaapi-driver
./autogen.sh
./configure --enable-hybrid-codec
time make -j$(nproc) VERBOSE=1
sudo make -j$(nproc) install
sudo ldconfig -vvvv
  1. libva:

Libva - это реализация для VA-API (API ускорения видео)

VA-API - это библиотека с открытым исходным кодом и спецификация API, которая обеспечивает доступ к возможностям аппаратного ускорения графики для обработки видео. Он состоит из основной библиотеки и драйверов для конкретных драйверов для каждого поддерживаемого поставщика оборудования.

git clone https://github.com/01org/libva
cd libva
./autogen.sh
./configure
time make -j$(nproc) VERBOSE=1
sudo make -j$(nproc) install
sudo ldconfig -vvvv

Когда это будет сделано, протестируйте поддерживаемый VAAPI набор функций, запустив vainfo:

vainfo

Вывод на моем текущем стенде:

libva info: VA-API version 0.40.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/local/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_40
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.40 (libva 1.7.3)
vainfo: Driver version: Intel i965 driver for Intel(R) Skylake - 1.8.3.pre1 (glk-alpha-58-g5a984ae)
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Simple            : VAEntrypointEncSlice
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointEncSliceLP
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointEncSliceLP
      VAProfileH264MultiviewHigh      : VAEntrypointVLD
      VAProfileH264MultiviewHigh      : VAEntrypointEncSlice
      VAProfileH264StereoHigh         : VAEntrypointVLD
      VAProfileH264StereoHigh         : VAEntrypointEncSlice
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileJPEGBaseline           : VAEntrypointVLD
      VAProfileJPEGBaseline           : VAEntrypointEncPicture
      VAProfileVP8Version0_3          : VAEntrypointVLD
      VAProfileVP8Version0_3          : VAEntrypointEncSlice
      VAProfileHEVCMain               : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointEncSlice
      VAProfileVP9Profile0            : VAEntrypointVLD

Создание полезной сборки FFmpeg для проверки кодировщиков:

Теперь мы построим двоичный файл FFmpeg, который может использовать VAAPI для проверки возможностей кодирования и декодирования на Skylake с использованием пользовательского префикса, потому что мы загружаем FFmpeg через систему модулей окружения на тестовом стенде.

Сначала подготовьте целевые каталоги:

sudo mkdir -p /apps/ffmpeg/dyn
sudo chown -Rc $USER:$USER /apps/ffmpeg/dyn
mkdir -p ~/ffmpeg_sources

При необходимости добавьте дополнительные компоненты:

(а). Создавайте и развертывайте nasm : nasm - это ассемблер для оптимизаций x86, используемых x264 и FFmpeg. Очень рекомендуется, или ваша результирующая сборка может быть очень медленной.

Обратите внимание, что теперь мы перешли от Yasm к nasm, так как это текущий ассемблер, который принимает x265, x264 и другие.

cd ~/ffmpeg_sources
wget wget http://www.nasm.us/pub/nasm/releasebuilds/2.14rc0/nasm-2.14rc0.tar.gz
tar xzvf nasm-2.14rc0.tar.gz
cd nasm-2.14rc0
./configure --prefix="/apps/ffmpeg/dyn" --bindir="/apps/ffmpeg/dyn/bin"
make -j$(nproc) VERBOSE=1
make -j$(nproc) install
make -j$(nproc) distclean

(б). Создавайте и развертывайте libx264 статически: эта библиотека предоставляет видеокодер H.264. Дополнительную информацию и примеры использования см. В Руководстве по кодированию H.264. Для этого нужно настроить ffmpeg с помощью --enable-gpl --enable-libx264.

cd ~/ffmpeg_sources
wget http://download.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
tar xjvf last_x264.tar.bz2
cd x264-snapshot*
PATH="/apps/ffmpeg/dyn/bin:$PATH" ./configure --prefix="/apps/ffmpeg/dyn" --bindir="/apps/ffmpeg/dyn/bin" --enable-static --disable-opencl
PATH="/apps/ffmpeg/dyn/bin:$PATH" make -j$(nproc) VERBOSE=1
make -j$(nproc) install VERBOSE=1
make -j$(nproc) distclean

(с). Создайте и настройте libx265: эта библиотека предоставляет видеокодер H.265/HEVC. Дополнительную информацию и примеры использования см. В Руководстве по кодированию H.265.

sudo apt-get install cmake mercurial
cd ~/ffmpeg_sources
hg clone https://bitbucket.org/multicoreware/x265
cd ~/ffmpeg_sources/x265/build/linux
PATH="$/apps/ffmpeg/dyn/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="/apps/ffmpeg/dyn" -DENABLE_SHARED:bool=off ../../source
make -j$(nproc) VERBOSE=1
make -j$(nproc) install VERBOSE=1
make -j$(nproc) clean VERBOSE=1

(г). Создайте и разверните библиотеку libfdk-aac: это обеспечивает аудиокодер AAC. Дополнительную информацию и примеры использования см. В Руководстве по кодированию аудио AAC. Для этого нужно настроить ffmpeg с помощью --enable-libfdk-aac (и --enable-nonfree, если вы также включили --enable-gpl).

cd ~/ffmpeg_sources
wget -O fdk-aac.tar.gz https://github.com/mstorsjo/fdk-aac/tarball/master
tar xzvf fdk-aac.tar.gz
cd mstorsjo-fdk-aac*
autoreconf -fiv
./configure --prefix="/apps/ffmpeg/dyn" --disable-shared
make -j$(nproc)
make -j$(nproc) install
make -j$(nproc) distclean

(е). Создание и настройка libvpx

   cd ~/ffmpeg_sources
   git clone https://github.com/webmproject/libvpx/
   cd libvpx
   ./configure --prefix="/apps/ffmpeg/dyn" --enable-runtime-cpu-detect --enable-vp9 --enable-vp8 \
   --enable-postproc --enable-vp9-postproc --enable-multi-res-encoding --enable-webm-io --enable-vp9-highbitdepth --enable-onthefly-bitpacking --enable-realtime-only \
   --cpu=native --as=yasm
   time make -j$(nproc)
   time make -j$(nproc) install
   time make clean -j$(nproc)
   time make distclean

(е). Построить LibVorbis

   cd ~/ffmpeg_sources
   wget -c -v http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.xz
   tar -xvf libvorbis-1.3.5.tar.xz
   cd libvorbis-1.3.5
   ./configure --enable-static --prefix="/apps/ffmpeg/dyn"
   time make -j$(nproc)
   time make -j$(nproc) install
   time make clean -j$(nproc)
   time make distclean

(г). Построить FFmpeg:

cd ~/ffmpeg_sources
git clone https://github.com/FFmpeg/FFmpeg -b master
cd FFmpeg
PATH="/apps/ffmpeg/dyn/bin:$PATH" PKG_CONFIG_PATH="/apps/ffmpeg/dyn/lib/pkgconfig" ./configure \
  --pkg-config-flags="--static" \
  --prefix="/apps/ffmpeg/dyn" \
  --extra-cflags="-I/apps/ffmpeg/dyn/include" \
  --extra-ldflags="-L/apps/ffmpeg/dyn/lib" \
  --bindir="/apps/ffmpeg/dyn/bin" \
  --enable-debug=3 \
  --enable-vaapi \
  --enable-libvorbis \
  --enable-libvpx \
  --enable-gpl \
  --cpu=native \
  --enable-opengl \
  --enable-libfdk-aac \
  --enable-libx264 \
  --enable-libx265 \
  --enable-nonfree 
PATH="/apps/ffmpeg/dyn/bin:$PATH" make -j$(nproc) 
make -j$(nproc) install 
make -j$(nproc) distclean 
hash -r

Примечание. Чтобы получить отладочные сборки, опустите шаг distclean и вы найдете ffmpeg_g файл ffmpeg_g под подкаталогом источников.

Нам часто нужны отладочные сборки, когда возникает проблема, и для целей отладки может потребоваться трассировка gdb.

Файл среды-среды для FFmpeg (при необходимости измените, если ваши префиксы отличаются, и добавьте конфликты при необходимости):

less /usr/share/modules/modulefiles/ffmpeg/vaapi


#%Module1.0#####################################################################
##
## ffmpeg media transcoder modulefile
## By Dennis Mungai <dmngaie@gmail.com>
## February, 2016
##

# for Tcl script use only
set     appname         ffmpeg
set     version         dyn
set     prefix          /apps/${appname}/${version}
set     exec_prefix     ${prefix}/bin

conflict        ffmpeg/git

prepend-path    PATH            ${exec_prefix}
prepend-path    LD_LIBRARY_PATH ${prefix}/lib

Чтобы загрузить и протестировать, запустите:

module load ffmpeg/vaapi

Подтвердите, что все включено:

which ffmpeg

Ожидаемый результат:

/apps/ffmpeg/dyn/bin/ffmpeg

Примеры фрагментов для проверки новых кодеров:

Убедитесь, что кодеры VAAPI были успешно созданы:

ffmpeg  -hide_banner -encoders | grep vaapi 

 V..... h264_vaapi           H.264/AVC (VAAPI) (codec h264)
 V..... hevc_vaapi           H.265/HEVC (VAAPI) (codec hevc)
 V..... mjpeg_vaapi          MJPEG (VAAPI) (codec mjpeg)
 V..... mpeg2_vaapi          MPEG-2 (VAAPI) (codec mpeg2video)
 V..... vp8_vaapi            VP8 (VAAPI) (codec vp8)

См. Справочную документацию для каждого рассматриваемого кодировщика:

ffmpeg -hide_banner -h encoder='encoder name'

Проверьте кодировщики;

Используя GNU parallel, мы будем кодировать некоторые файлы mp4 (4k H.264 тестовых сэмплов по 40 минут каждый, 6-канальный звук AAC) на пути ~/src в системе до VP8 и HEVC, используя приведенные ниже примеры. Обратите внимание, что я настроил кодировщики в соответствии с моими прецедентами, а повторное масштабирование до 1080p включено. При необходимости отрегулируйте.

Для VP8 запускает 10 сеансов кодирования одновременно:

parallel -j 10 --verbose '/apps/ffmpeg/dyn/bin/ffmpeg -loglevel debug -threads 4 -hwaccel vaapi -i "{}"  -vaapi_device /dev/dri/renderD129 -c:v vp8_vaapi -loop_filter_level:v 63 -loop_filter_sharpness:v 15 -b:v 4500k -maxrate:v 7500k -vf 'format=nv12,hwupload,scale_vaapi=w=1920:h=1080' -c:a libvorbis -b:a 384k -ac 6 -f webm "{.}.webm"' ::: $(find . -type f -name '*.mp4')

К HEVC с GNU Parallel:

Для основного профиля HEVC, запуская 10 сеансов кодирования одновременно:

parallel -j 4 --verbose '/apps/ffmpeg/dyn/bin/ffmpeg -loglevel debug -threads 4 -hwaccel vaapi -i "{}"  -vaapi_device /dev/dri/renderD129 -c:v hevc_vaapi -qp:v 19 -b:v 2100k -maxrate:v 3500k -vf 'format=nv12,hwupload,scale_vaapi=w=1920:h=1080' -c:a libvorbis -b:a 384k -ac 6 -f matroska "{.}.mkv"' ::: $(find . -type f -name '*.mp4')

Некоторые примечания:

  1. Intel QuickSync очень эффективен. См. Трассировки использования мощности и средние системные нагрузки, при этом здесь работает 10 кодировок.
  2. Skylake HEVC-кодировщик работает очень медленно, и я подозреваю, что на моем оборудовании может быть медленнее, чем программный кодер -based x265 и kvazaar HEVC-кодеры. Тем не менее, его качество, когда оно хорошо настроено, значительно превосходит другие аппаратные кодеры -based, такие как кодер Nvidia NVENC HEVC на SKU Maxwell GM200. Однако кодер NVENC на Pascal быстрее и превосходит тот, который применяется в кодеке Intel Skylake HEVC.
  3. В отличие от Nvidia NVENC, нет ограничений одновременного кодирования для потребительских SKU. Я смог запускать 10 сеансов кодирования с VAAPI, тогда как с NVENC я бы ограничился двумя максимальными одновременными кодировками на GPU серии GeForce GTX на тестовых стендах. Хорошая работа, Intel.

Привет, ребята, небольшое обновление: аппаратная ускоренная кодировка VP9 теперь доступна для FFmpeg. Однако для использования этой функции вам понадобится интегрированный GPU Intel Kabylake -based.

И теперь, с новым кодером vp9_vaapi, вот что мы получаем.

Доступны опции кодировщика:

ffmpeg -h vp9_vaapi

Вывод:

Encoder vp9_vaapi [VP9 (VAAPI)]:
    General capabilities: delay 
    Threading capabilities: none
    Supported pixel formats: vaapi_vld
vp9_vaapi AVOptions:
  -loop_filter_level <int>        E..V.... Loop filter level (from 0 to 63) (default 16)
  -loop_filter_sharpness <int>        E..V.... Loop filter sharpness (from 0 to 15) (default 4)

Что происходит, когда вы пытаетесь снять это с неподдерживаемого оборудования, скажем, Skylake?

См. Пример вывода ниже:

[Parsed_format_0 @ 0x42cb500] compat: called with args=[nv12]
[Parsed_format_0 @ 0x42cb500] Setting 'pix_fmts' to value 'nv12'
[Parsed_scale_vaapi_2 @ 0x42cc300] Setting 'w' to value '1920'
[Parsed_scale_vaapi_2 @ 0x42cc300] Setting 'h' to value '1080'
[graph 0 input from stream 0:0 @ 0x42cce00] Setting 'video_size' to value '3840x2026'
[graph 0 input from stream 0:0 @ 0x42cce00] Setting 'pix_fmt' to value '0'
[graph 0 input from stream 0:0 @ 0x42cce00] Setting 'time_base' to value '1/1000'
[graph 0 input from stream 0:0 @ 0x42cce00] Setting 'pixel_aspect' to value '1/1'
[graph 0 input from stream 0:0 @ 0x42cce00] Setting 'sws_param' to value 'flags=2'
[graph 0 input from stream 0:0 @ 0x42cce00] Setting 'frame_rate' to value '24000/1001'
[graph 0 input from stream 0:0 @ 0x42cce00] w:3840 h:2026 pixfmt:yuv420p tb:1/1000 fr:24000/1001 sar:1/1 sws_param:flags=2
[format @ 0x42cba40] compat: called with args=[vaapi_vld]
[format @ 0x42cba40] Setting 'pix_fmts' to value 'vaapi_vld'
[auto_scaler_0 @ 0x42cd580] Setting 'flags' to value 'bicubic'
[auto_scaler_0 @ 0x42cd580] w:iw h:ih flags:'bicubic' interl:0
[Parsed_format_0 @ 0x42cb500] auto-inserting filter 'auto_scaler_0' between the filter 'graph 0 input from stream 0:0' and the filter 'Parsed_format_0'
[AVFilterGraph @ 0x42ca360] query_formats: 6 queried, 4 merged, 1 already done, 0 delayed
[auto_scaler_0 @ 0x42cd580] w:3840 h:2026 fmt:yuv420p sar:1/1 -> w:3840 h:2026 fmt:nv12 sar:1/1 flags:0x4
[hwupload @ 0x42cbcc0] Surface format is nv12.
[AVHWFramesContext @ 0x42ccbc0] Created surface 0x4000000.
[AVHWFramesContext @ 0x42ccbc0] Direct mapping possible.
[AVHWFramesContext @ 0x42c3e40] Created surface 0x4000001.
[AVHWFramesContext @ 0x42c3e40] Direct mapping possible.
[AVHWFramesContext @ 0x42c3e40] Created surface 0x4000002.
[AVHWFramesContext @ 0x42c3e40] Created surface 0x4000003.
[AVHWFramesContext @ 0x42c3e40] Created surface 0x4000004.
[AVHWFramesContext @ 0x42c3e40] Created surface 0x4000005.
[AVHWFramesContext @ 0x42c3e40] Created surface 0x4000006.
[AVHWFramesContext @ 0x42c3e40] Created surface 0x4000007.
[AVHWFramesContext @ 0x42c3e40] Created surface 0x4000008.
[AVHWFramesContext @ 0x42c3e40] Created surface 0x4000009.
[AVHWFramesContext @ 0x42c3e40] Created surface 0x400000a.
[vp9_vaapi @ 0x409da40] Encoding entrypoint not found (19 / 6).
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
[AVIOContext @ 0x40fdac0] Statistics: 0 seeks, 0 writeouts
[aac @ 0x40fcb00] Qavg: -nan
[AVIOContext @ 0x409f820] Statistics: 32768 bytes read, 0 seeks
Conversion failed!

Интересные биты - это предупреждения точки входа для кодирования VP9, отсутствующие на этой конкретной платформе, что подтверждается выходом vainfo:

libva info: VA-API version 0.40.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/local/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_40
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.40 (libva 1.7.3)
vainfo: Driver version: Intel i965 driver for Intel(R) Skylake - 1.8.4.pre1 (glk-alpha-71-gc3110dc)
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Simple            : VAEntrypointEncSlice
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointEncSliceLP
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointEncSliceLP
      VAProfileH264MultiviewHigh      : VAEntrypointVLD
      VAProfileH264MultiviewHigh      : VAEntrypointEncSlice
      VAProfileH264StereoHigh         : VAEntrypointVLD
      VAProfileH264StereoHigh         : VAEntrypointEncSlice
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileJPEGBaseline           : VAEntrypointVLD
      VAProfileJPEGBaseline           : VAEntrypointEncPicture
      VAProfileVP8Version0_3          : VAEntrypointVLD
      VAProfileVP8Version0_3          : VAEntrypointEncSlice
      VAProfileHEVCMain               : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointEncSlice
      VAProfileVP9Profile0            : VAEntrypointVLD

Точка входа VLD (для переменной длины) для профиля VP9 0 является самым дальним, что Skylake приходит с точки зрения аппаратного ускорения VP9.

Они с тестовыми кроватями Kabylake, запускают эти тесты кодирования и отчитываются :-)

+7
30 июн. '16 в 20:57
источник

FFMPEG в настоящее время (по состоянию на 10-01-2014) не поддерживает кодирование VAAPI. В настоящее время он поддерживает только декодирование с помощью VAAPI.

0
01 окт. '14 в 23:07
источник

На данный момент это, похоже, еще не реализовано. Это было из-за лета google целей кода на 2013 год.

Однако можно использовать vaapi hwaccel, используя один из libva utils (h264encode): насколько мне известно, он работает только с файлом rawvideo (fourcc NV12, IYUV, YV12, UYVY), который вы можете получить из v4l2:

ffmpeg -i/dev/video0 -c: v rawvideo -pix_fmt nv12 -vframes 1000 -y yourfilm.yuv

Трудность в том, что вам нужно знать номер и размер кадра, так как h264encode не может угадать их из rawvideo, тогда вы можете:

h264encode -w 640 -h 480 -n 1000 --srcyuv yourfilm.yuv

Закодированный файл h264 выпадает по умолчанию в /tmp/test.264, который вы, конечно, можете изменить.

Скорость, с которой она закодирована и окончательное качество, просто потрясающая (от 440 до 8 миллионов менее, чем за две секунды, и отсутствие видимых потерь в качестве)

Теперь было бы неплохо иметь кодек в ffmpeg, который мог бы напрямую использовать ресурсы GPU. Кто-нибудь есть какие-либо документы на ffmpeg codec dev или, по крайней мере, может указывать на кодек, близкий к кодировке vaapi_hwaccel?

0
29 янв. '15 в 7:32
источник

Посмотрите другие вопросы по меткам или Задайте вопрос