Habe das mit Hardware-Transcoding für VAAPI nun endlich richtig hinbekommen, falls jmd. anderes mal vor dem gleichen Problem stehen sollte, hier mein Weg:
Mein System:
- Gigabyte GA-H270-HD3
- Intel Celeron G3930 2x2,90GHz
- Intel HD Graphics 610
- Ubuntu Server 16.04.3 LTS
Das Problem mit Emby + ffmpeg war bei mir, dass die mitgelieferte ffmpeg-Version wohl kein VAAPI unterstützt (falls ich falsch liege, bitte korrigieren!).
Daher musste ich eine neue ffmpeg-Version beschaffen, die alles unterstützt und zudem aktuell ist.
Hier noch ein paar Infos zur ffmpeg-Version aus besagtem PPA: https://launchpad.net/~jonathonf/+archive/ubuntu/ffmpeg-3
- Voraussetzungen
- Feststellen, ob Chip überhaupt VAAPI unterstützt!
- Onboard-Grafikchip im BIOS aktivieren (nur falls zuvor deaktiviert)
- System / ffmpeg
- PPA für aktuelles ffmpeg installieren: sudo add-apt-repository ppa:jonathonf/ffmpeg-3
- Packages updaten: sudo apt update
- Installieren von Tools/ffmpeg: sudo apt install ffmpeg libva-tools vainfo
- Testen von ffmpeg / VAAPI
- Testen, ob Hardware-Voraussetzungen erfüllt und erkannt werden: sudo vainfo Ergebnis sieht bei mir so aus:
error: XDG_RUNTIME_DIR not set in the environment.
error: can't connect to X server!
libva info: VA-API version 0.39.4
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_39
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.39 (libva 1.7.3)
vainfo: Driver version: Intel i965 driver for Intel(R) Kabylake - 1.7.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
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
VAProfileVP9Profile2 : VAEntrypointVLD
Alles anzeigen
Ggf. hier bereits ffmpeg für eine Video-Datei testen: sudo ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -i /pfad/zum/film.mkv /pfad/zum/output.mkv
Wenn alles funktioniert, sollte in der Konsole ein Output ohne Fehler angezeigt werden, ansonsten wird vermutlich eine Menge rot erscheinen. In beiden Fällen einfach mit Strg-C abbrechen.
- Emby
- Emby-User in video-Gruppe hinzufügen (Berechtigung für Zugriff auf Video-Gerät) sudo usermod -a -G video emby
- Transcoding-Einstellungen aufrufen und folgendes einstellen:
- Hardware-Beschleunigung: Video Acceleration API (VA API) (experimental)
- VAAPI-Gerät: /dev/dri/renderD128
- Aktiviere Hardware-Encoding: [X]
- Anzahl Transkodierungs-Threads: Auto
- FFmpeg Verzeichnis: /usr/bin/ffmpeg
- Ggf. Emby-Server neustarten
- Film starten
In den Emby-Server-Logs sollte dann eine Datei mit einem Transcoding-Log erstellt werden, diese sollte in etwa so aussehen:
ffmpeg version 3.3.4-1~16.04.york0 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
configuration: --prefix=/usr --extra-version='1~16.04.york0' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
WARNING: library configuration mismatch
avcodec configuration: --prefix=/usr --extra-version='1~16.04.york0' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared --enable-version3 --disable-doc --disable-programs --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libtesseract --enable-libvo_amrwbenc --enable-netcdf
libavutil 55. 58.100 / 55. 58.100
libavcodec 57. 89.100 / 57. 89.100
libavformat 57. 71.100 / 57. 71.100
libavdevice 57. 6.100 / 57. 6.100
libavfilter 6. 82.100 / 6. 82.100
libavresample 3. 5. 0 / 3. 5. 0
libswscale 4. 6.100 / 4. 6.100
libswresample 2. 7.100 / 2. 7.100
libpostproc 54. 5.100 / 54. 5.100
libva info: VA-API version 0.39.4
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_39
libva info: va_openDriver() returns 0
Input #0, matroska,webm, from 'file:/pfad/zum/film.mkv':
Metadata:
title : [FILM]
encoder : libebml v0.8.0 + libmatroska v0.9.0
creation_time : [DATUM]
Duration: 02:26:39.79, start: 0.000000, bitrate: 13675 kb/s
Chapter #0:0: start 0.000000, end 271.104000
Metadata:
title : 00:00:00.000
Chapter #0:1: start 271.104000, end 571.321000
Metadata:
title : 00:04:31.104
Chapter #0:2: start 571.321000, end 837.003000
Metadata:
title : 00:09:31.321
Chapter #0:3: start 837.003000, end 1065.231000
Metadata:
title : 00:13:57.003
Chapter #0:4: start 1065.231000, end 1349.098000
Metadata:
title : 00:17:45.231
Chapter #0:5: start 1349.098000, end 1756.963000
Metadata:
title : 00:22:29.098
Chapter #0:6: start 1756.963000, end 2057.180000
Metadata:
title : 00:29:16.963
Chapter #0:7: start 2057.180000, end 2269.934000
Metadata:
title : 00:34:17.180
Chapter #0:8: start 2269.934000, end 2490.196000
Metadata:
title : 00:37:49.934
Chapter #0:9: start 2490.196000, end 2839.003000
Metadata:
title : 00:41:30.196
Chapter #0:10: start 2839.003000, end 3108.814000
Metadata:
title : 00:47:19.003
Chapter #0:11: start 3108.814000, end 3363.151000
Metadata:
title : 00:51:48.814
Chapter #0:12: start 3363.151000, end 3679.175000
Metadata:
title : 00:56:03.151
Chapter #0:13: start 3679.175000, end 3844.048000
Metadata:
title : 01:01:19.175
Chapter #0:14: start 3844.048000, end 3951.030000
Metadata:
title : 01:04:04.048
Chapter #0:15: start 3951.030000, end 4444.565000
Metadata:
title : 01:05:51.030
Chapter #0:16: start 4444.565000, end 4681.010000
Metadata:
title : 01:14:04.565
Chapter #0:17: start 4681.010000, end 5134.379000
Metadata:
title : 01:18:01.010
Chapter #0:18: start 5134.379000, end 5388.008000
Metadata:
title : 01:25:34.379
Chapter #0:19: start 5388.008000, end 5729.682000
Metadata:
title : 01:29:48.008
Chapter #0:20: start 5729.682000, end 6323.275000
Metadata:
title : 01:35:29.682
Chapter #0:21: start 6323.275000, end 6666.660000
Metadata:
title : 01:45:23.275
Chapter #0:22: start 6666.660000, end 7206.157000
Metadata:
title : 01:51:06.660
Chapter #0:23: start 7206.157000, end 7658.276000
Metadata:
title : 02:00:06.157
Chapter #0:24: start 7658.276000, end 8112.271000
Metadata:
title : 02:07:38.276
Chapter #0:25: start 8112.271000, end 8290.949000
Metadata:
title : 02:15:12.271
Chapter #0:26: start 8290.949000, end 8799.791000
Metadata:
title : 02:18:10.949
Stream #0:0(eng): Video: h264 (High), yuv420p(progressive), 1920x800, SAR 1:1 DAR 12:5, 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default) (forced)
Metadata:
title : 1080p Pate
Stream #0:1(ger): Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 1536 kb/s (default) (forced)
Metadata:
title : DTS 5.1
Stream #0:2(eng): Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 1536 kb/s
Metadata:
title : DTS 5.1
Stream #0:3(ger): Subtitle: dvd_subtitle, 1920x1080 (default) (forced)
Metadata:
title : Forced Subs
Stream #0:4(ger): Subtitle: dvd_subtitle, 1920x1080
Stream #0:5(eng): Subtitle: dvd_subtitle, 1920x1080
Stream mapping:
Stream #0:0 (h264) -> overlay:main (graph 0)
Stream #0:3 (dvdsub) -> scale (graph 0)
hwupload (graph 0) -> Stream #0:0 (h264_vaapi)
Stream #0:2 -> #0:1 (dts (dca) -> aac (native))
Press [q] to stop, [?] for help
[matroska,webm @ 0x561c4165d7e0] sub2video: using 1920x800 canvas
[segment @ 0x561c417d04c0] Opening '/var/lib/emby-server/transcoding-temp/3821f2ea885ab1aff7a12571a1270042775.ts' for writing
Output #0, segment, to '/var/lib/emby-server/transcoding-temp/3821f2ea885ab1aff7a12571a1270042%d.ts':
Metadata:
encoder : Lavf57.71.100
Stream #0:0: Video: h264 (h264_vaapi) (High), vaapi_vld, 1920x800 [SAR 1:1 DAR 12:5], q=0-31, 13675 kb/s, 23.98 fps, 90k tbn, 23.98 tbc (default)
Metadata:
encoder : Lavc57.89.100 h264_vaapi
Stream #0:1: Audio: aac (LC), 48000 Hz, 5.1, fltp, 384 kb/s
Metadata:
encoder : Lavc57.89.100 aac
frame= 0 fps=0.0 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed= 0x
frame= 4 fps=3.9 q=-0.0 size=N/A time=00:38:45.29 bitrate=N/A speed=2.24e+03x
frame= 17 fps= 11 q=-0.0 size=N/A time=00:38:45.87 bitrate=N/A speed=1.51e+03x
frame= 31 fps= 15 q=-0.0 size=N/A time=00:38:46.45 bitrate=N/A speed=1.13e+03x
frame= 45 fps= 17 q=-0.0 size=N/A time=00:38:47.00 bitrate=N/A speed= 902x
frame= 58 fps= 19 q=-0.0 size=N/A time=00:38:47.60 bitrate=N/A speed= 754x
frame= 74 fps= 20 q=-0.0 size=N/A time=00:38:48.20 bitrate=N/A speed= 641x
[segment @ 0x561c417d04c0] Opening '/var/lib/emby-server/transcoding-temp/3821f2ea885ab1aff7a12571a1270042.m3u8.tmp' for writing
[segment @ 0x561c417d04c0] Opening '/var/lib/emby-server/transcoding-temp/3821f2ea885ab1aff7a12571a1270042776.ts' for writing
frame= 89 fps= 21 q=-0.0 size=N/A time=00:38:48.81 bitrate=N/A speed= 562x
frame= 103 fps= 22 q=-0.0 size=N/A time=00:38:49.41 bitrate=N/A speed= 501x
frame= 115 fps= 22 q=-0.0 size=N/A time=00:38:49.92 bitrate=N/A speed= 452x
frame= 130 fps= 23 q=-0.0 size=N/A time=00:38:50.56 bitrate=N/A speed= 410x
frame= 145 fps= 23 q=-0.0 size=N/A time=00:38:51.18 bitrate=N/A speed= 374x
[segment @ 0x561c417d04c0] Opening '/var/lib/emby-server/transcoding-temp/3821f2ea885ab1aff7a12571a1270042.m3u8.tmp' for writing
[segment @ 0x561c417d04c0] Opening '/var/lib/emby-server/transcoding-temp/3821f2ea885ab1aff7a12571a1270042777.ts' for writing
frame= 160 fps= 24 q=-0.0 size=N/A time=00:38:51.80 bitrate=N/A speed= 346x
frame= 175 fps= 24 q=-0.0 size=N/A time=00:38:52.42 bitrate=N/A speed= 321x
frame= 190 fps= 24 q=-0.0 size=N/A time=00:38:53.04 bitrate=N/A speed= 300x
frame= 206 fps= 25 q=-0.0 size=N/A time=00:38:53.70 bitrate=N/A speed= 281x
[segment @ 0x561c417d04c0] Opening '/var/lib/emby-server/transcoding-temp/3821f2ea885ab1aff7a12571a1270042.m3u8.tmp' for writing
[segment @ 0x561c417d04c0] Opening '/var/lib/emby-server/transcoding-temp/3821f2ea885ab1aff7a12571a1270042778.ts' for writing
frame= 221 fps= 25 q=-0.0 size=N/A time=00:38:54.34 bitrate=N/A speed= 264x
frame= 235 fps= 25 q=-0.0 size=N/A time=00:38:54.92 bitrate=N/A speed= 249x
frame= 249 fps= 25 q=-0.0 size=N/A time=00:38:55.51 bitrate=N/A speed= 237x
frame= 263 fps= 25 q=-0.0 size=N/A time=00:38:56.09 bitrate=N/A speed= 225x
frame= 277 fps= 25 q=-0.0 size=N/A time=00:38:56.73 bitrate=N/A speed= 214x
[segment @ 0x561c417d04c0] Opening '/var/lib/emby-server/transcoding-temp/3821f2ea885ab1aff7a12571a1270042.m3u8.tmp' for writing
[segment @ 0x561c417d04c0] Opening '/var/lib/emby-server/transcoding-temp/3821f2ea885ab1aff7a12571a1270042779.ts' for writing
frame= 291 fps= 26 q=-0.0 size=N/A time=00:38:57.26 bitrate=N/A speed= 205x
frame= 305 fps= 26 q=-0.0 size=N/A time=00:38:57.86 bitrate=N/A speed= 196x
frame= 319 fps= 26 q=-0.0 size=N/A time=00:38:58.44 bitrate=N/A speed= 188x
frame= 333 fps= 26 q=-0.0 size=N/A time=00:38:59.01 bitrate=N/A speed= 181x
frame= 347 fps= 26 q=-0.0 size=N/A time=00:38:59.59 bitrate=N/A speed= 174x
frame= 361 fps= 26 q=-0.0 size=N/A time=00:39:00.19 bitrate=N/A speed= 167x
[segment @ 0x561c417d04c0] Opening '/var/lib/emby-server/transcoding-temp/3821f2ea885ab1aff7a12571a1270042.m3u8.tmp' for writing
[segment @ 0x561c417d04c0] Opening '/var/lib/emby-server/transcoding-temp/3821f2ea885ab1aff7a12571a1270042780.ts' for writing
frame= 376 fps= 26 q=-0.0 size=N/A time=00:39:00.85 bitrate=N/A speed= 161x
frame= 389 fps= 26 q=-0.0 size=N/A time=00:39:01.34 bitrate=N/A speed= 156x
frame= 403 fps= 26 q=-0.0 size=N/A time=00:39:01.98 bitrate=N/A speed= 151x
frame= 418 fps= 26 q=-0.0 size=N/A time=00:39:02.57 bitrate=N/A speed= 146x
frame= 433 fps= 26 q=-0.0 size=N/A time=00:39:03.17 bitrate=N/A speed= 141x
[segment @ 0x561c417d04c0] Opening '/var/lib/emby-server/transcoding-temp/3821f2ea885ab1aff7a12571a1270042.m3u8.tmp' for writing
[segment @ 0x561c417d04c0] Opening '/var/lib/emby-server/transcoding-temp/3821f2ea885ab1aff7a12571a1270042781.ts' for writing
frame= 448 fps= 26 q=-0.0 size=N/A time=00:39:03.83 bitrate=N/A speed= 137x
frame= 463 fps= 26 q=-0.0 size=N/A time=00:39:04.43 bitrate=N/A speed= 133x
frame= 477 fps= 26 q=-0.0 size=N/A time=00:39:05.01 bitrate=N/A speed= 129x
frame= 491 fps= 26 q=-0.0 size=N/A time=00:39:05.60 bitrate=N/A speed= 126x
frame= 506 fps= 26 q=-0.0 size=N/A time=00:39:06.20 bitrate=N/A speed= 122x
[segment @ 0x561c417d04c0] Opening '/var/lib/emby-server/transcoding-temp/3821f2ea885ab1aff7a12571a1270042.m3u8.tmp' for writing
[segment @ 0x561c417d04c0] Opening '/var/lib/emby-server/transcoding-temp/3821f2ea885ab1aff7a12571a1270042782.ts' for writing
frame= 519 fps= 26 q=-0.0 size=N/A time=00:39:06.78 bitrate=N/A speed= 119x
frame= 533 fps= 26 q=-0.0 size=N/A time=00:39:07.35 bitrate=N/A speed= 116x
Alles anzeigen
So habe ich das auf meinem System zum Laufen gebracht, vll. hilft es ja dem ein oder anderen 