Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Próbuję bez powodzenia zmusić do działania przyspieszenie sprzętowe dla wideo na komputerze z procem Intela J4205 (mikroarchitektura Apollo Lake) z Debianem Busterem na pokładzie. Jajo: 4.19.0-8-amd64.
Zainstalowałem z repo debiana intel-media-va-driver-non-free i965-va-driver-shaders.
Dodałem usera do grupy video:
$ groups |grep -o video video
vainfo - bez wyeksportowania zmiennej DISPLAY:
$ vainfo error: can't connect to X server! libva info: VA-API version 1.4.0 libva info: va_getDriverName() returns 1 libva error: va_getDriverName() failed with operation failed,driver_name=i965 vaInitialize failed with error code 1 (operation failed),exit
vainfo: DISPLAY=:0
$ vainfo libva info: VA-API version 1.4.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_1_4 libva info: va_openDriver() returns 0 vainfo: VA-API version: 1.4 (libva 2.4.0) vainfo: Driver version: Intel i965 driver for Intel(R) Broxton - 2.3.0 vainfo: Supported profile and entrypoints VAProfileMPEG2Simple : VAEntrypointVLD VAProfileMPEG2Main : VAEntrypointVLD 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 VAProfileHEVCMain10 : VAEntrypointVLD VAProfileVP9Profile0 : VAEntrypointVLD
sprawdziłem, że faktycznie istnieje w systemie /dev/dri/renderD128
próbuję użyć tego wsparcia w ffmpegu (z repo debiana):
$ ffmpeg -init_hw_device vaapi=foo:/dev/dri/renderD128 ffmpeg version 4.1.4-1~deb10u1 Copyright (c) 2000-2019 the FFmpeg developers built with gcc 8 (Debian 8.3.0-6) configuration: --prefix=/usr --extra-version='1~deb10u1' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared libavutil 56. 22.100 / 56. 22.100 libavcodec 58. 35.100 / 58. 35.100 libavformat 58. 20.100 / 58. 20.100 libavdevice 58. 5.100 / 58. 5.100 libavfilter 7. 40.101 / 7. 40.101 libavresample 4. 0. 0 / 4. 0. 0 libswscale 5. 3.100 / 5. 3.100 libswresample 3. 3.100 / 3. 3.100 libpostproc 55. 3.100 / 55. 3.100 [AVHWDeviceContext @ 0x55d6a77ab6c0] No VA display found for device: /dev/dri/renderD128. Device creation failed: -22. Failed to set value 'vaapi=foo:/dev/dri/renderD128' for option 'init_hw_device': Invalid argument Error parsing global options: Invalid argument
próbowałem też innej kompilacji ffmpega - to samo (ze zmienną DISPLAY=:0 jak i bez):
$ ./ffmpeg -init_hw_device vaapi=foo:/dev/dri/renderD128 ffmpeg version 4.2.2-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2019 the FFmpeg developers built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516 configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg libavutil 56. 31.100 / 56. 31.100 libavcodec 58. 54.100 / 58. 54.100 libavformat 58. 29.100 / 58. 29.100 libavdevice 58. 8.100 / 58. 8.100 libavfilter 7. 57.100 / 7. 57.100 libswscale 5. 5.100 / 5. 5.100 libswresample 3. 5.100 / 3. 5.100 libpostproc 55. 5.100 / 55. 5.100 [AVHWDeviceContext @ 0x5b1cb00] No VA display found for device /dev/dri/renderD128. Device creation failed: -22. Failed to set value 'vaapi=foo:/dev/dri/renderD128' for option 'init_hw_device': Invalid argument Error parsing global options: Invalid argument
Próbowałem tej komendy jak i prostych konwersji - skutek ten sam. Przetrząsam internety, ale bez rezultatu. Czemu dziadostwo nie chce współpracować po dobroci?
Ostatnio edytowany przez seler (2020-04-26 20:02:39)
Offline
Wrzuć kernel i mesa z backports.
Offline
zainstalowałem kernel z buster-backports:
$ uname -r 5.4.0-0.bpo.4-amd64
W buster-backports nie ma pakietu mesa (ani mesa-va-drivers).
Niestety nic to nie zmieniło - wszystko jest identycznie jak wcześniej ( /dev/dri/renderD128 istnieje, a ffmpeg wypluwa to samo co w pierwszym poście :( )
Ostatnio edytowany przez seler (2020-04-25 18:53:46)
Offline
Używasz Xorga czy Waylanda?
Pytam, bo u mnie na Waylandzie chodzi na vo=opengl albo vaapi-copy.
GPU:
Graphics: Device-1: Intel Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics driver: i915 v: kernel Display: wayland server: X.Org 1.20.7 driver: i915 resolution: 1920x1080~60Hz OpenGL: renderer: Mesa DRI Intel Haswell Desktop v: 4.5 Mesa 19.3.5
Ostatnio edytowany przez Jacekalex (2020-04-26 06:39:14)
Offline
Xorg - mam tam XFCE
Graphics: Device-1: Intel Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Integrated Graphics vendor: ASRock driver: i915 v: kernel bus ID: 00:02.0 chip ID: 8086:5a84 Display: x11 server: X.Org 1.20.4 driver: modesetting unloaded: fbdev,vesa resolution: 1920x1080~60Hz OpenGL: renderer: Mesa DRI Intel HD Graphics 505 (Broxton) v: 4.5 Mesa 18.3.6
Ostatnio edytowany przez seler (2020-04-26 12:41:50)
Offline
Sprawdź mpv
~/.config/mpv/mpv.conf
vo=gpu hwdec=vaapi hwdec-codecs=all
$mpv '/media/nfs/timon/dane/Filmy/Pan Anatol szuka miliona.mkv' (+) Video --vid=1 (*) (h264 720x576 25.000fps) (+) Audio --aid=1 --alang=pol (*) (mp3 2ch 44100Hz) [vaapi] libva: /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so init failed AO: [alsa] 44100Hz stereo 2ch float Using hardware decoding (vaapi). VO: [gpu] 720x576 => 1024x576 vaapi[nv12] AV: 00:00:16 / 01:13:40 (0%) A-V: 0.000 Cache: 1241s/150MB
Offline
Z twoim configiem:
$ mpv Sztuka\ przekraczania\ _\ The\ Art\ of\ Breaking\ the\ Ground-NVEBWUM8lko.mkv Playing: Sztuka przekraczania _ The Art of Breaking the Ground-NVEBWUM8lko.mkv (+) Video --vid=1 (*) (h264 1920x1080 25.000fps) (+) Audio --aid=1 --alang=eng (*) (opus 2ch 48000Hz) [vo/gpu/vaapi-egl] vaAcquireSurfaceHandle() failed (invalid VASurfaceID) Using hardware decoding (vaapi). AO: [pulse] 48000Hz stereo 2ch float VO: [gpu] 1920x1080 vaapi[nv12] AV: 00:00:04 / 00:51:41 (0%) A-V: 0.000
Offline
Czyli działa.
W czym widzisz problem.
Offline
No tak, odtwarza się.
Problem widzę w tym, że nie mogę użyć tego vaapi do transkodowania przy użyciu ffmpega. Chciałbym wspomóc się sprzętowym transkodowaniem, m.in. do streamowania wideo wyciągniętego z tunera dvb-t podpiętego przez USB. A także do okazjonalnego szybszego enkodowania różnych materiałów wideo do h264 (lub h265 o ile dałoby radę z tym sprzętem)
Ostatnio edytowany przez seler (2020-04-26 14:23:01)
Offline
h265 na pewno nie.
Po vainfo widać że tego nie obrabia.
Z transkodowaniem nie mam doświadczen. Moja karta tego nie obrabia.
Co do tunera dvb-t po cholerę to przerabiać.
Lepiej puścic w takiej postaci jakiej jest.
tvheadend radzi sobie z tym wyśmienicie.
Offline
żeby np. puścić w niższej rozdzielczości przez net na komórkę i nie zużyć całego transferu na oglądanie twarzy polityka w ultra hd :)
Offline
U mnie wydaje sie działać takie polecenie.
ffmpeg -hwaccel vaapi -hwaccel_output_format vaapi -hwaccel_device /dev/dri/renderD128 -i film.ts -c:v h264_vaapi output.mp4
Dalekie mu do doskonałości ale działa.
Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> h264 (h264_vaapi)) Stream #0:1 -> #0:1 (mp2 (native) -> aac (native))
Offline
u mnie to polecenie daje:
[AVHWDeviceContext @ 0x557b055b9400] No VA display found for device: /dev/dri/renderD128. Device creation failed: -22. [h264 @ 0x557b055c9c80] No device available for decoder: device type vaapi needed for codec h264. Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> h264 (h264_vaapi)) Stream #0:1 -> #0:1 (aac (native) -> aac (native)) Device setup failed for decoder on input stream #0:0 : Invalid argument
MAM!
Spod roota zadziałało! Najwidoczniej kwestia praw dostępu. Tylko dlaczego, skoro user należy do grupy video?
Offline
adam@debian:~/Pulpit$ groups adam audio dip video plugdev kvm netdev lpadmin scanner
Po dodaniu do grupy trzeba się przelogować.
Najlepiej zaś restart maszyny przeprowadzic.
Offline
problem rozwiązany. /dev/dri/renderD128 należał do grupy render:
$ ls -l /dev/dri/renderD128 crw-rw----+ 1 root render 226, 128 kwi 25 18:42 /dev/dri/renderD128
dodanie usera do tej grupy załatwiło sprawę. Taka prosta rzecz, a tyle się z tym bujałem...
Edit: w grupie video byłem od samego początku, zresztą w pierwszym poście o tym jest napisane. Nie mam pojęcia skąd ta grupa render - w kontekście vaapi wszędzie pisze właśnie o grupie video, a nie render.
Ostatnio edytowany przez seler (2020-04-26 20:04:35)
Offline
Jak na razie nie udało mi się ułożyć składni polecenia dla ffmpeg która by mnie zadawalała.
Owszem kodowanie trwa trzy razy szybciej przy użyciu h264_vaapi ale niestety żeby uzyskać podobną jakość jak przy użyciu libx264 to pliki wynikowe ważą 3x więcej niestety.
Offline