pgalbavy 6 Posted October 19, 2017 Posted October 19, 2017 I found a number of other threads with similar symptoms but not quite the same hardware; The closest being https://emby.media/community/index.php?/topic/45550-transcoding-performance-vs-that-other-server/ I have a no-name i7 mini PC ("Intel® Core i7-7500U CPU @ 2.70GHz") running Ubuntu 17.04 Recently installed Emby (release) next to Plex and paid for Premiere because it seems like a right thing to do. Anyway trying hardware transcode with the default ffpmeg fails: [AVHWDeviceContext @ 0x50d4520] No VA display found for device: /dev/dri/renderD128. [vaapi @ 0x312f1e0] Failed to create a VAAPI device But using the system shipped one (/usr/bin/ffmpeg) works OK, in ubuntu 17.04 is claims: ffmpeg version 3.2.4-1build2 Copyright (c) 2000-2017 the FFmpeg developers built with gcc 6.3.0 (Ubuntu 6.3.0-8ubuntu1) 20170221 Hardware transcoding works, CPU usage is reasonable (70-80% of one core) but playback stutters - play 10 seconds, stop 5, play 10 seconds, stop etc. Not sure what this means (yet), but the only noticeable errors in the log are: [h264 @ 0xc6763beea0] Hardware accelerated decoding with frame threading is known to be unstable and its use is discouraged. Input stream #0:0 frame changed from size:1920x1080 fmt:yuv420p to size:1920x1080 fmt:vaapi_vld Unrepairable overflow! I've changed the CRF to 19 (from 23) with no difference, I've set the temporary path to a local scratch SSD with lots of space, turned off throttling. No effect. I have yet to try one of the custom ffmpeg builds, but looking at the log it's not the conversion performance that's the problem: frame=10024 fps= 67 q=-0.0 size=N/A time=00:06:58.34 bitrate=N/A speed=2.81x frame=10047 fps= 67 q=-0.0 size=N/A time=00:06:59.30 bitrate=N/A speed= 2.8x frame=10073 fps= 67 q=-0.0 size=N/A time=00:07:00.39 bitrate=N/A speed= 2.8x On the other hand, looking a bit more manually I *think* the stop/start is every time the m3u8 file is updated but "tail -f" doesn't work on that file for some reason, so it's hard to visually sync the changes to the display - just lots of repeated "ls -l" I also tried the beta but with the .net install it seemed to not quite work so I hurriedly backed out deciding that a pre-release of a new system is not quite the right thing to do just now. Any immediate suggestions and/or which logs would be useful? Peter
Guest plexman Posted October 19, 2017 Posted October 19, 2017 I think if I'm not mistaken that the default ffmpeg that comes with emby doesn't have h264_vaapi enabled, so efectively with your system shipped it works. Do you mind posting your "vainfo" output?
pgalbavy 6 Posted October 19, 2017 Author Posted October 19, 2017 Here you are: 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.3 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 VAProfileHEVCMain10 : VAEntrypointEncSlice VAProfileVP9Profile0 : VAEntrypointVLD VAProfileVP9Profile0 : VAEntrypointEncSlice VAProfileVP9Profile2 : VAEntrypointVLD
Guest plexman Posted October 19, 2017 Posted October 19, 2017 (edited) The only thing that comes to my mind is that the "problem" might be your file. Because I can see that VAAPI works good, and the slutter in your playback could be because of the file, I don't really know. EDIT: Are you specifying any threads? If so, try leaving in "auto" mode. https://emby.media/community/index.php?/topic/47388-transcoding-fails-decoding-with-frame-threading/?p=447314 Edited October 19, 2017 by plexman
pgalbavy 6 Posted October 20, 2017 Author Posted October 20, 2017 Thanks, I tried both VC-1 and H.264 files (1080p) - both the same. With H/W transcode off *or* H/W transcode on Plex it works fine. Thread mode tried Auto / Max / 1 - all same. Without knowing much - but enough to be dangerous - I am going to look more into how/why the file is split into small chunks and the update of the .m3u8 playlist file. I *suspect* that the remote player is being somehow triggered to reload the playlist file on each update and because it's remote (home->work) this takes a finite amount of time and may delay things. Why just me, I don't know.
pgalbavy 6 Posted October 20, 2017 Author Posted October 20, 2017 Looking at the segment files produced there is a huge difference in sizes leading me to believe that either the stock Ubuntu ffmpeg or VA-API are doing the wrong thing. Off to locate a custom ffmpeg to test. Details, same film, ignore first few segment as the difference is also large but the video is mostly blank screen intro: s/w transcode: 2017-10-20 11:54:43.498 Info App: /usr/bin/ffmpeg -i file:"/media/hdd0/Films/8 Mile (2002) (BluRay).mkv" -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 libx264 -pix_fmt yuv420p -preset veryfast -crf 23 -maxrate 3616000 -bufsize 7232000 -profile:v high -level 4.1 -x264opts:0 subme=0:me_range=4:rc_lookahead=10:me=dia:no_chroma_me:8x8dct=0:partitions=none -force_key_frames "expr:if(isnan(prev_forced_t),eq(t,t),gte(t,prev_forced_t+3))" -vf "scale=trunc(min(max(iw\,ih*dar)\,1280)/2)*2:trunc(ow/dar/2)*2" -copyts -vsync -1 -codec:a:0 aac -strict experimental -ac 6 -ab 384000 -f segment -max_delay 5000000 -avoid_negative_ts disabled -start_at_zero -segment_time 3 -individual_header_trailer 0 -segment_format mpegts -segment_list_type m3u8 -segment_start_number 0 -segment_list "/media/ssd2/emby/transcoding-temp/972b38adc6bee77d80a4b01354556e5e.m3u8" -y "/media/ssd2/emby/transcoding-temp/972b38adc6bee77d80a4b01354556e5e%d.ts" segment files: -rwxrwxrwx 1 peter peter 652736 11:54:50 972b38adc6bee77d80a4b01354556e5e5.ts -rwxrwxrwx 1 peter peter 309448 11:54:51 972b38adc6bee77d80a4b01354556e5e6.ts -rwxrwxrwx 1 peter peter 264516 11:54:52 972b38adc6bee77d80a4b01354556e5e7.ts -rwxrwxrwx 1 peter peter 181984 11:54:53 972b38adc6bee77d80a4b01354556e5e8.ts -rwxrwxrwx 1 peter peter 188752 11:54:54 972b38adc6bee77d80a4b01354556e5e9.ts h/w transcode: 2017-10-20 11:55:19.482 Info App: /usr/bin/ffmpeg -hwaccel vaapi -hwaccel_output_format vaapi -vaapi_device /dev/dri/renderD128 -i file:"/media/hdd0/Films/8 Mile (2002) (BluRay).mkv" -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 h264_vaapi -b:v 3616000 -maxrate 3616000 -bufsize 7232000 -level 41 -force_key_frames "expr:if(isnan(prev_forced_t),eq(t,t),gte(t,prev_forced_t+3))" -vf "format=nv12|vaapi,hwupload,scale_vaapi=w=1280:h=720" -copyts -vsync -1 -codec:a:0 aac -strict experimental -ac 6 -ab 384000 -f segment -max_delay 5000000 -avoid_negative_ts disabled -start_at_zero -segment_time 3 -individual_header_trailer 0 -segment_format mpegts -segment_list_type m3u8 -segment_start_number 0 -segment_list "/media/ssd2/emby/transcoding-temp/3af734c95b2129a77a64da8f37c5c6a4.m3u8" -y "/media/ssd2/emby/transcoding-temp/3af734c95b2129a77a64da8f37c5c6a4%d.ts" segment files: -rwxrwxrwx 1 peter peter 464360 11:55:26 3af734c95b2129a77a64da8f37c5c6a45.ts -rwxrwxrwx 1 peter peter 2040364 11:55:27 3af734c95b2129a77a64da8f37c5c6a46.ts -rwxrwxrwx 1 peter peter 2327440 11:55:28 3af734c95b2129a77a64da8f37c5c6a47.ts -rwxrwxrwx 1 peter peter 890932 11:55:29 3af734c95b2129a77a64da8f37c5c6a48.ts -rwxrwxrwx 1 peter peter 447628 11:55:31 3af734c95b2129a77a64da8f37c5c6a49.ts
pgalbavy 6 Posted October 20, 2017 Author Posted October 20, 2017 Well, I did a risky thing an updated to the 17.10 release remotely. After fixing my filesystem mount issue when I got home, I tested again. Same film, segments with h/w transcode: -rwxrwxrwx 1 peter peter 1468656 Oct 20 18:54 28ba43c6a929e8fd98a0d06e7d042be45.ts -rwxrwxrwx 1 peter peter 1094536 Oct 20 18:54 28ba43c6a929e8fd98a0d06e7d042be46.ts -rwxrwxrwx 1 peter peter 1008808 Oct 20 18:54 28ba43c6a929e8fd98a0d06e7d042be47.ts -rwxrwxrwx 1 peter peter 172020 Oct 20 18:54 28ba43c6a929e8fd98a0d06e7d042be48.ts -rwxrwxrwx 1 peter peter 234060 Oct 20 18:54 28ba43c6a929e8fd98a0d06e7d042be49.ts Significantly smaller. I am now however not at the end of a remote connection so can't confirm any change in actual streaming behaviour, but apart from segment 5 (the first) all the others are noticeably smaller in size. The stock ffmpeg is now saying: ffmpeg version 3.3.4-2 Copyright (c) 2000-2017 the FFmpeg developers built with gcc 7 (Ubuntu 7.2.0-8ubuntu2) configuration: --prefix=/usr --extra-version=2 --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 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 and vainfo shows updated i965 drivers: sudo vainfo error: XDG_RUNTIME_DIR not set in the environment. error: can't connect to X server! libva info: VA-API version 0.40.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_40 libva info: va_openDriver() returns 0 vainfo: VA-API version: 0.40 (libva ) vainfo: Driver version: Intel i965 driver for Intel(R) Kabylake - 1.8.3 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 VAProfileHEVCMain10 : VAEntrypointVLD VAProfileHEVCMain10 : VAEntrypointEncSlice VAProfileVP9Profile0 : VAEntrypointVLD VAProfileVP9Profile0 : VAEntrypointEncSlice VAProfileVP9Profile2 : VAEntrypointVLD This is well on the way to solving my issue, hope this may help the next person to see this. Will confirm in a follow-up if remote playback is also really fixed.
Guest plexman Posted October 21, 2017 Posted October 21, 2017 But I think those segments are normal, I have them too
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now