2014-09-11 3 views
3

Я загрузил программное обеспечение (info-beamer), и я хотел бы использовать ускорение GPU для декодирования видео H.264. Я знаю, что моя платформа способна декодировать видео H.264 с помощью графического процессора. Я провел несколько тестов с GStreamer, используя следующую команду и видео воспроизводится плавно, без слишком большое использования CPU:Использование аппаратного ускорения с libavcodec

gst-launch-1.0 filesrc location=./Sintel.mp4 ! qtdemux ! vaapidecode ! vaapisink 

Но когда я играю то же видео с инфо-проекторами 100% процессор используются. Я думал, что libavcodec будет автоматически использовать VAAPI, если он доступен ... Должен ли я использовать другую библиотеку? Что я делаю не так?

Моя платформа работает с Atom E3826 с Intel HD и установлена ​​Ubuntu 14.04.

EDIT:

Я думаю, что я установил все необходимые библиотеки:

[email protected]:~$ dpkg -l | grep libva 
ii libva-dev:amd64        1.3.0-2            amd64  Video Acceleration (VA) API for Linux -- development files 
ii libva-drm1:amd64       1.3.0-2            amd64  Video Acceleration (VA) API for Linux -- DRM runtime 
ii libva-egl1:amd64       1.3.0-2            amd64  Video Acceleration (VA) API for Linux -- EGL runtime 
ii libva-glx1:amd64       1.3.0-2            amd64  Video Acceleration (VA) API for Linux -- GLX runtime 
ii libva-intel-vaapi-driver     1.3.0-1ubuntu1          all   VAAPI driver for Intel G45 & HD Graphics family (transitional package) 
ii libva-tpi1:amd64       1.3.0-2            amd64  Video Acceleration (VA) API for Linux -- TPI runtime 
ii libva-wayland1:amd64      1.3.0-2            amd64  Video Acceleration (VA) API for Linux -- Wayland runtime 
ii libva-x11-1:amd64       1.3.0-2            amd64  Video Acceleration (VA) API for Linux -- X11 runtime 
ii libva1:amd64        1.3.0-2            amd64  Video Acceleration (VA) API for Linux -- runtime 
[email protected]:~$ dpkg -l | grep vaapi 
ii gstreamer1.0-vaapi:amd64     0.5.7-0ubuntu4          amd64  VA-API plugins for GStreamer 
ii libgstreamer-vaapi1.0-0:amd64    0.5.7-0ubuntu4          amd64  GStreamer libraries from the "vaapi" set 
ii libva-intel-vaapi-driver     1.3.0-1ubuntu1          all   VAAPI driver for Intel G45 & HD Graphics family (transitional package) 

Вот выход vainfo:

[email protected]:~$ sudo vainfo 
error: XDG_RUNTIME_DIR not set in the environment. 
libva info: VA-API version 0.35.0 
libva info: va_getDriverName() returns 0 
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so 
libva info: Found init function __vaDriverInit_0_35 
libva info: va_openDriver() returns 0 
vainfo: VA-API version: 0.35 (libva 1.3.0) 
vainfo: Driver version: Intel i965 driver - 1.3.0 
vainfo: Supported profile and entrypoints 
     VAProfileMPEG2Simple   : VAEntrypointVLD 
     VAProfileMPEG2Simple   : VAEntrypointEncSlice 
     VAProfileMPEG2Main    : VAEntrypointVLD 
     VAProfileMPEG2Main    : VAEntrypointEncSlice 
     VAProfileH264ConstrainedBaseline: VAEntrypointVLD 
     VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice 
     VAProfileH264Main    : VAEntrypointVLD 
     VAProfileH264Main    : VAEntrypointEncSlice 
     VAProfileH264High    : VAEntrypointVLD 
     VAProfileH264High    : VAEntrypointEncSlice 
     VAProfileVC1Simple    : VAEntrypointVLD 
     VAProfileVC1Main    : VAEntrypointVLD 
     VAProfileVC1Advanced   : VAEntrypointVLD 
     VAProfileNone     : VAEntrypointVideoProc 
     VAProfileJPEGBaseline   : VAEntrypointVLD 
+0

Вы установили 'libva'? вы можете показать вывод команды 'vainfo'? – Nazar554

+0

Кажется, что основная информация об объекте базы данных - raspebbeyr pi, возможно, аппаратное ускорение на других процессорах и gpu не поддерживается. –

+0

Чтение https://info-beamer.com/doc/info-beamer#opensourceversion и получение источника с помощью git clone https://github.com/dividuum/info-beamer.git, я не вижу ссылки на libva поддержка. –

ответ

1

Все еще работаю, я ошибочно полагаю, аппаратный кодек был AVCodec => это не тот случай. AVHWAccel привязан к контексту, это не прямой кодек ... поэтому avcodec_find_decoder_by_name ("h264_vaapi") ничего не вернет.

инфо-видеопроектор не поддерживает аппаратное декодирование кодека (который является h264_vaapi):

video.c Код:

видео-> кодек = avcodec_find_decoder (видео-> codec_context-> codec_id);

я добавил

if (video->codec_context->hwaccel != NULL) 
     { 
     fprintf(stderr, "HW accel IN USE : %s\n", video->codec_context->hwaccel->name); 
     } 
    else 
     { 
     fprintf(stderr, "NO HW accel IN USE\n"); 
     } 

and "NO HW accel IN USE\n" is displayed, while i checked previously that it is registered : 

    fprintf(stderr,"\n hw Decoders\n"); 
    AVHWAccel *first_hwaccel = av_hwaccel_next(NULL); 
    fprintf(stderr,"%p", first_hwaccel); 
    AVHWAccel *hwaccel = first_hwaccel; 
    AVHWAccel *h264 = NULL; 
    const char * h264_name = "h264_vaapi"; 
    while (hwaccel != NULL) 
     { 
    if (hwaccel != NULL) 
     { 
     fprintf(stderr,"%s ", hwaccel->name); 
     if (strcmp(hwaccel->name, h264_name)== 0) 
      { 
     h264=hwaccel; 
      } 
     } 
    hwaccel=av_hwaccel_next(hwaccel); 

    if (hwaccel == first_hwaccel) 
     { 
     break; 
     } 
     } 
    fprintf(stderr,"\n"); 

Он показывает: HW декодеры 0x7f19af53fa80h263_vaapi h263_vdpau h264_vaapi h264_vdpau mpeg1_vdpau mpeg2_vaapi mpeg2_vdpau mpeg4_vaapi mpeg4_vdpau vc1_vaapi vc1_vdpau wmv3_vaapi WM3 _vdpau

так кодеком знает о тех, но поток-проекторам не используй их.

Код требования video.c в заголовке, который должен быть разветвлен от avcodec_sample.0.5.0.c ... поэтому он не был полностью написан командой info-beamer.

+0

Спасибо за вашу помощь! Можно ли использовать аппаратное ускорение? Что ты предлагаешь? Должен ли я использовать libavcodec из моей системы во время компиляции? – morandg

+0

Я боюсь, что аппаратное декодирование с помощью vaapi не приходит свободно, просто используя libavcodec, но для его поддержки требуется конкретный код в потоковом лучере, и я остановил свое исследование на этом этапе ... i dobt это можно зафиксировать, просто перекомпилировав некоторые опции libavcodec в статическом режиме. –

Смежные вопросы