Jump to content

H/W Transcoding on Evansport (DS415play/DS214play) Machines


solabc16

Recommended Posts

solabc16

Hello All

 

This is something we've been looking at for a while between stable releases, you may have seen some discussions on the subject in other threads in this forum.

 

I'm pleased to say that this work is now rolled up into the stable Synology/XPEnology package releases from 3.1.2.0-1.

 

There are some details here on what to expect: https://emby.media/community/index.php?/topic/36814-ds916-emby-transcoding-performance/?p=379641

 

A big thank you goes to @@xxJonoxx who made their system available for us to test with.

 

Please note, that this should still be considered experimental at this stage and we'll rely on your experiences and feedback to refine the implementation in future releases.

 


 

Instructions to Enable Support

 

DSM6

    SSH to your Synology NAS and login as 'admin'.

    Change to utilities directory, using 'cd /var/packages/EmbyServer/scripts/utilities'.

    Change the FFmpeg version, using 'sudo ./switchcomp ffmpeg 0.0.0'.

DSM5

    SSH to your Synology NAS and login as 'root'.

    Change to utilities directory, using 'cd /var/packages/EmbyServer/scripts/utilities'.

    Change the FFmpeg version, using 'sudo ./switchcomp ffmpeg 0.0.0'.
 


 

Instructions to Disable Support

 

DSM6

    SSH to your Synology NAS and login as 'admin'.

    Change to utilities directory, using 'cd /var/packages/EmbyServer/scripts/utilities'.

    Change the FFmpeg version, using 'sudo ./switchcomp ffmpeg 3.1.4'.

DSM5

    SSH to your Synology NAS and login as 'root'.

    Change to utilities directory, using 'cd /var/packages/EmbyServer/scripts/utilities'.

    Change the FFmpeg version, using 'sudo ./switchcomp ffmpeg 3.1.4'.

 


 

NOTE

 

1) As prompted on the screen, you will need to stop and start Emby Server in Package Center for the change to take effect.

 

2) For now, this change will need to be reapplied following a package update.

 

3) The version of FFmpeg to specify when disabling h/w transcoding support is dependent on the package version.

 

        For 3.1.2.0-3 use 3.1.4

        For 3.1.2.0-2 use 3.2.2

        For 3.1.2.0-1 use 3.2.2

        For 3.5.2.0-1 use 4.0

 


 

Best

- James

Edited by solabc16
Link to comment
Share on other sites

Darkjeje

Hello James @@solabc16

 

Thank you for your work.

My question is for user who use the beta version.

 

What do we need to do ? The same ?

And what is the version of FFmpeg can I specify when activating/disabling h/w transcoding support ?

Link to comment
Share on other sites

Darkjeje

For my first test with a dvr.ms movies, my processor is at 83% and the movie is lagging without hardware transcoding, but with this H/W the movie is playing without lagging and with a proc at more or less 40%.

Great job James !!!

Link to comment
Share on other sites

  • 1 month later...
xxJonoxx

Hi James!

 

​I just noticed 3.2.0 show up in package centre, if I install that, do I have to manually run the above commands again? Or will it work out-of-the-box now?

 

Cheers

​Jono

 

​btw, the Transcoding is working a treat.

Link to comment
Share on other sites

solabc16

Hi @@xxJonoxx

 

Glad to hear all is still working well for you!

 

You will need to manually run the above commands again, following a software update.

 

This is something we're looking at persisting in future updates, if you had already applied the change.

 

Best

- James

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...
  • 1 month later...
Ekomax

Hi,

read the article and thought as long term Plex user why not give it a try. I got a DS214PLAY and was surprised about the HW transcoding with this NAS. Im in the middle in setting up the Server as discribed. Activated HW Transcoding as described via SSH. Just wanted to ask if i have to enable HW Transcoding else where in the Serversettings because the is a Drop Down Field with setting for HW Transcoding.

 

Portforwarding both both TCP Ports 8096 and 8920?

 

Why is there shown a new version of the Server when i just installed it on DSM. Beta notification?

 

Im new to Emby and would be greatfull for some help.

 

Sorry for my bad english

 

Ekomax

Link to comment
Share on other sites

Hi @@Ekomax, no only the one place is needed for HW Transcoding.

 

It is showing a notification because we just (yesterday) released a new update, and we are still in process of rolling it out to Synology. 

 

Does this answer your questions? Thanks !

Link to comment
Share on other sites

solabc16

Hello @@Ekomax

 

The Synology/XPEnology package release 3.2.10.0-1 is now available in Package Center to install/upgrade.

 

As Luke mentioned, it's usually takes us a couple of days to build and test the Synology/XPEnology packages, once the release is made available.

 

With regard to the h/w transcoding, nothing else is required other than the steps above for this platform.

 

Let us know how you get on!

 

Best

- James

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...
rlw6534

I just discovered this today and installed/enabled on my 214play.  I seem to be having issues with DTS audio when transcoding.  Any ideas or is DTS not supported?

 

ffmpeg version 2.7.1 Copyright © 2000-2015 the FFmpeg developers

built with gcc 4.9.3 (crosstool-NG 1.20.0) 20150311 (prerelease)
configuration: --prefix=/usr --incdir='${prefix}/include/ffmpeg' --arch=i686 --target-os=linux --cross-prefix=/usr/local/i686-pc-linux-gnu/bin/i686-pc-linux-gnu- --enable-cross-compile --enable-optimizations --enable-pic --enable-gpl --enable-shared --disable-static --enable-version3 --enable-nonfree --enable-libfaac --enable-encoders --enable-pthreads --disable-bzlib --disable-protocol=rtp --disable-muxer=image2 --disable-muxer=image2pipe --disable-swscale-alpha --disable-ffserver --disable-ffplay --disable-devices --disable-bzlib --disable-altivec --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libmp3lame --disable-vaapi --disable-decoder=amrnb --disable-encoder=zmbv --disable-encoder=dca --disable-encoder=ac3 --disable-encoder=ac3_fixed --disable-encoder=eac3 --disable-decoder=dca --disable-decoder=eac3 --disable-decoder=truehd --cc=/usr/local/i686-pc-linux-gnu/bin/i686-pc-linux-gnu-ccache-gcc --enable-yasm --enable-libx264 --enable-encoder=libx264 --enable-libh264_smd --enable-smd --disable-filter=hqdn3d --extra-libs='-lgdl -losal -lpal -lsven -lismd_core -lismd_audio -lismd_viddec -lismd_videnc -lismd_vidpproc -lplatform_config -lffmpeg_plugin -ljson-c '
libavutil 54. 27.100 / 54. 27.100
libavcodec 56. 41.100 / 56. 41.100
libavformat 56. 36.100 / 56. 36.100
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 16.101 / 5. 16.101
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.100 / 1. 2.100
libpostproc 53. 3.100 / 53. 3.100
Unknown decoder 'dts'

Link to comment
Share on other sites

@@rlw6534, how did you install Emby Server? That is a very old version of ffmpeg. I know that our Synology package ships with a newer version so I'm wondering how you installed. Thanks.

Link to comment
Share on other sites

rlw6534

@@rlw6534, how did you install Emby Server? That is a very old version of ffmpeg. I know that our Synology package ships with a newer version so I'm wondering how you installed. Thanks.

 

 

 

From the package center using source https://synology.emby.media/.   The Emby version is 3.2.13.0-1

 

I did enable the hardware support per Post #1 above.  Here is the directory contents from the terminal:

 

 

admin@DiskStation:~$ cd /var/packages/EmbyServer/target/ffmpeg/bin/

admin@DiskStation:/var/packages/EmbyServer/target/ffmpeg/bin$ ls

ffmpeg  ffprobe

admin@DiskStation:/var/packages/EmbyServer/target/ffmpeg/bin$ ls -l

total 8

-rwxr--r-- 1 embysvr users 4699 Apr 21 10:49 ffmpeg

lrwxrwxrwx 1 embysvr users   24 Apr 21 10:49 ffprobe -> ../../v3.2.4/bin/ffprobe

admin@DiskStation:/var/packages/EmbyServer/target/ffmpeg/bin

Edited by rlw6534
Link to comment
Share on other sites

xxJonoxx

I just discovered this today and installed/enabled on my 214play.  I seem to be having issues with DTS audio when transcoding.  Any ideas or is DTS not supported?

 

 

I'm not an expert, might be better to wait for James, but when I had an issue with DTS I believe I found that Synology does not have a codec for it due to licencing costs.

 

If I find that info again, I will edit in a link - I believe it was from the synology forums

 

Edit: While some of what I said was true, Synology has dropped support for Dolby DTS, unofficially you can get DTS support depending on the version of ffmpeg you're running. for example, I followed these instructions as was able to transcode DTS. all be it very slowly.

 

http://takopost.com/enable-synology-dts-transcoding-ffmpeg/

 

average about 24-30fps - but it did work

http://192.168.0.100:8096/videos/f83402f003256a4c063f5270571b0a13/stream.ts?Params=;test;f83402f003256a4c063f5270571b0a13;false;h264;aac;1;;29552000;448000;;;;;0;;;;;;;;;f83402f003256a4c063f5270571b0a13;false;;;false;788ba891f09e97f8e5f427f456c6a453;false;;false;false

{"Protocol":"File","Id":"f83402f003256a4c063f5270571b0a13","Path":"/volume1/Entertainment/Movies/Rings.2017.720p.BluRay.x264-DRONES/Rings.2017.720p.BluRay.x264-GECKOS.mkv","Type":"Default","Container":"mkv","Name":"720P/H264/DTS","IsRemote":false,"ETag":"788ba891f09e97f8e5f427f456c6a453","RunTimeTicks":61310939136,"ReadAtNativeFramerate":false,"SupportsTranscoding":true,"SupportsDirectStream":true,"SupportsDirectPlay":true,"IsInfiniteStream":false,"RequiresOpening":false,"RequiresClosing":false,"SupportsProbing":true,"RequiresLooping":false,"VideoType":"VideoFile","MediaStreams":[{"Codec":"h264","Language":"eng","TimeBase":"1/1000","CodecTimeBase":"583/27956","NalLengthSize":"4","IsInterlaced":false,"IsAVC":true,"BitRate":6123168,"BitDepth":8,"RefFrames":1,"IsDefault":true,"IsForced":false,"Height":720,"Width":1280,"AverageFrameRate":23.97599,"RealFrameRate":23.97599,"Profile":"High","Type":"Video","AspectRatio":"16:9","Index":0,"IsExternal":false,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"PixelFormat":"yuv420p","Level":41,"IsAnamorphic":false},{"Codec":"dts","Language":"eng","TimeBase":"1/1000","CodecTimeBase":"1/48000","DisplayTitle":"Eng DTS 5.1 Default","IsInterlaced":false,"ChannelLayout":"5.1","BitRate":1536000,"Channels":6,"SampleRate":48000,"IsDefault":true,"IsForced":false,"Profile":"DTS","Type":"Audio","Index":1,"IsExternal":false,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Level":0,"IsAnamorphic":false}],"PlayableStreamFileNames":[],"Formats":[],"Bitrate":7659168,"RequiredHttpHeaders":{}}

/var/packages/EmbyServer/target/ffmpeg/bin/ffmpeg -f matroska -codec:0 h264 -codec:1 dts -i file:"/volume1/Entertainment/Movies/Rings.2017.720p.BluRay.x264-DRONES/Rings.2017.720p.BluRay.x264-GECKOS.mkv" -map 0:0 -map 0:1 -map -0:s -codec:v:0 copy -bsf:v h264_mp4toannexb -vsync -1 -map_metadata -1 -map_chapters -1 -threads 0 -codec:a:0 aac -strict experimental -ac 6 -ab 384000  -y "/var/packages/EmbyServer/target/var/transcoding-temp/e3d81dc5bb06009b43fc02f464bcb762.ts"


ffmpeg version 3.2.4-20170217T150808UTC Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 5.4.0 (GCC)
  configuration: --prefix=/var/packages/EmbyServer/target/ffmpeg --enable-cross-compile --cross-prefix=i686-pc-linux-gnu- --target-os=linux --disable-rpath --arch=i686 --enable-libzimg --enable-libmfx --enable-vaapi --enable-yasm --enable-gpl --enable-shared --disable-static --disable-debug --disable-ffplay --disable-ffserver --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --enable-gnutls --enable-libass --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libfreetype --enable-fontconfig --enable-gray --enable-libfribidi --enable-libvidstab --disable-indev=sndio --disable-outdev=sndio --extra-version=20170217T150808UTC --extra-libs='-lm -ldl -lrt -lpthread -llzma -lz -lstdc++ '
  libavutil      55. 34.101 / 55. 34.101
  libavcodec     57. 64.101 / 57. 64.101
  libavformat    57. 56.101 / 57. 56.101
  libavdevice    57.  1.100 / 57.  1.100
  libavfilter     6. 65.100 /  6. 65.100
  libswscale      4.  2.100 /  4.  2.100
  libswresample   2.  3.100 /  2.  3.100
  libpostproc    54.  1.100 / 54.  1.100
Input #0, matroska,webm, from 'file:/volume1/Entertainment/Movies/Rings.2017.720p.BluRay.x264-DRONES/Rings.2017.720p.BluRay.x264-GECKOS.mkv':
  Metadata:
    encoder         : libebml v1.3.1 + libmatroska v1.4.2
    creation_time   : 2017-04-19T23:39:08.000000Z
  Duration: 01:42:11.09, start: 0.000000, bitrate: 6123 kb/s
    Chapter #0:0: start 0.000000, end 522.731000
......
Output #0, mpegts, to '/var/packages/EmbyServer/target/var/transcoding-temp/e3d81dc5bb06009b43fc02f464bcb762.ts':
  Metadata:
    encoder         : Lavf57.56.101
    Stream #0:0: Video: h264 (High), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 23.98 fps, 23.98 tbr, 90k tbn, 1k tbc (default)
    Stream #0:1: Audio: aac (LC), 48000 Hz, 5.1, fltp, 384 kb/s (default)
    Metadata:
      encoder         : Lavc57.64.101 aac
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (dts (dca) -> aac (native))
Press [q] to stop, [?] for help
frame=   33 fps=0.0 q=-1.0 size=       9kB time=00:00:01.47 bitrate=  49.0kbits/s speed=2.94x   
frame=   52 fps= 51 q=-1.0 size=     145kB time=00:00:02.13 bitrate= 556.4kbits/s speed=2.09x   
frame=   60 fps= 39 q=-1.0 size=     261kB time=00:00:02.58 bitrate= 827.4kbits/s speed=1.69x   
frame=   73 fps= 36 q=-1.0 size=     471kB time=00:00:03.11 bitrate=1239.1kbits/s speed=1.52x   
frame=   84 fps= 33 q=-1.0 size=     619kB time=00:00:03.60 bitrate=1407.6kbits/s speed=1.41x   
frame=   96 fps= 31 q=-1.0 size=     802kB time=00:00:04.07 bitrate=1612.0kbits/s speed=1.33x   
frame=  112 fps= 31 q=-1.0 size=    1071kB time=00:00:04.67 bitrate=1878.9kbits/s speed=1.31x   
frame=  125 fps= 31 q=-1.0 size=    1317kB time=00:00:05.26 bitrate=2048.0kbits/s speed=1.29x   
frame=  140 fps= 30 q=-1.0 size=    1610kB time=00:00:05.84 bitrate=2257.1kbits/s speed=1.27x   
frame=  154 fps= 30 q=-1.0 size=    2036kB time=00:00:06.44 bitrate=2588.9kbits/s speed=1.26x   
frame=  170 fps= 30 q=-1.0 size=    2467kB time=00:00:07.03 bitrate=2870.7kbits/s speed=1.25x   
frame=  180 fps= 29 q=-1.0 size=    2925kB time=00:00:07.57 bitrate=3164.0kbits/s speed=1.24x   
frame=  192 fps= 29 q=-1.0 size=    3479kB time=00:00:08.12 bitrate=3507.1kbits/s speed=1.23x
​..... 

However, when I run James script to enable HW Transoding;

 

 

Change the FFmpeg version, using 'sudo ./switchcomp ffmpeg 0.0.0'

 

It reverts back to version 2.7.1 and we loose the ability to transcode DTS with or without HW transposing.

http://192.168.0.100:8096/videos/f83402f003256a4c063f5270571b0a13/stream.ts?Params=;test;f83402f003256a4c063f5270571b0a13;false;h264;aac;1;;29552000;448000;;;;;0;;;;;;;;;f83402f003256a4c063f5270571b0a13;false;;;false;788ba891f09e97f8e5f427f456c6a453;false;;false;false

{"Protocol":"File","Id":"f83402f003256a4c063f5270571b0a13","Path":"/volume1/Entertainment/Movies/Rings.2017.720p.BluRay.x264-DRONES/Rings.2017.720p.BluRay.x264-GECKOS.mkv","Type":"Default","Container":"mkv","Name":"720P/H264/DTS","IsRemote":false,"ETag":"788ba891f09e97f8e5f427f456c6a453","RunTimeTicks":61310939136,"ReadAtNativeFramerate":false,"SupportsTranscoding":true,"SupportsDirectStream":true,"SupportsDirectPlay":true,"IsInfiniteStream":false,"RequiresOpening":false,"RequiresClosing":false,"SupportsProbing":true,"RequiresLooping":false,"VideoType":"VideoFile","MediaStreams":[{"Codec":"h264","Language":"eng","TimeBase":"1/1000","CodecTimeBase":"583/27956","NalLengthSize":"4","IsInterlaced":false,"IsAVC":true,"BitRate":6123168,"BitDepth":8,"RefFrames":1,"IsDefault":true,"IsForced":false,"Height":720,"Width":1280,"AverageFrameRate":23.97599,"RealFrameRate":23.97599,"Profile":"High","Type":"Video","AspectRatio":"16:9","Index":0,"IsExternal":false,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"PixelFormat":"yuv420p","Level":41,"IsAnamorphic":false},{"Codec":"dts","Language":"eng","TimeBase":"1/1000","CodecTimeBase":"1/48000","DisplayTitle":"Eng DTS 5.1 Default","IsInterlaced":false,"ChannelLayout":"5.1","BitRate":1536000,"Channels":6,"SampleRate":48000,"IsDefault":true,"IsForced":false,"Profile":"DTS","Type":"Audio","Index":1,"IsExternal":false,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Level":0,"IsAnamorphic":false}],"PlayableStreamFileNames":[],"Formats":[],"Bitrate":7659168,"RequiredHttpHeaders":{}}

/var/packages/EmbyServer/target/ffmpeg/bin/ffmpeg -f matroska -codec:0 h264 -codec:1 dts -i file:"/volume1/Entertainment/Movies/Rings.2017.720p.BluRay.x264-DRONES/Rings.2017.720p.BluRay.x264-GECKOS.mkv" -map 0:0 -map 0:1 -map -0:s -codec:v:0 copy -bsf:v h264_mp4toannexb -vsync -1 -map_metadata -1 -map_chapters -1 -threads 0 -codec:a:0 aac -strict experimental -ac 6 -ab 384000  -y "/var/packages/EmbyServer/target/var/transcoding-temp/e3d81dc5bb06009b43fc02f464bcb762.ts"


ffmpeg version 2.7.1 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.9.3 (crosstool-NG 1.20.0) 20150311 (prerelease)
  configuration: --prefix=/usr --incdir='${prefix}/include/ffmpeg' --arch=i686 --target-os=linux --cross-prefix=/usr/local/i686-pc-linux-gnu/bin/i686-pc-linux-gnu- --enable-cross-compile --enable-optimizations --enable-pic --enable-gpl --enable-shared --disable-static --enable-version3 --enable-nonfree --enable-libfaac --enable-encoders --enable-pthreads --disable-bzlib --disable-protocol=rtp --disable-muxer=image2 --disable-muxer=image2pipe --disable-swscale-alpha --disable-ffserver --disable-ffplay --disable-devices --disable-bzlib --disable-altivec --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libmp3lame --disable-vaapi --disable-decoder=amrnb --disable-encoder=zmbv --disable-encoder=dca --disable-encoder=ac3 --disable-encoder=ac3_fixed --disable-encoder=eac3 --disable-decoder=dca --disable-decoder=eac3 --disable-decoder=truehd --cc=/usr/local/i686-pc-linux-gnu/bin/i686-pc-linux-gnu-ccache-gcc --enable-yasm --enable-libx264 --enable-encoder=libx264 --enable-libh264_smd --enable-smd --disable-filter=hqdn3d --extra-libs='-lgdl -losal -lpal -lsven -lismd_core -lismd_audio -lismd_viddec -lismd_videnc -lismd_vidpproc -lplatform_config -lffmpeg_plugin -ljson-c '
  libavutil      54. 27.100 / 54. 27.100
  libavcodec     56. 41.100 / 56. 41.100
  libavformat    56. 36.100 / 56. 36.100
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 16.101 /  5. 16.101
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.100 /  1.  2.100
  libpostproc    53.  3.100 / 53.  3.100
Unknown decoder 'dts'

I'm not 100%, but its like James needs to update that script to use a later version of ffmpeg (?). 

Edited by xxJonoxx
Link to comment
Share on other sites

solabc16

Hi @@rlw6534, @@xxJonoxx

 

So there's a few things here, so let me try and step through them.

 

The changes Synology made to FFmpeg to support h/w transcoding on their Evansport based systems, they haven't contributed back to the open source project. There's a few discussions kicking around on this, so I won't get into that debate here.

 

For this reason we can't simply use the VA API support we've added for h/w transcoding on other Synology h/w. (e.g. https://emby.media/community/index.php?/topic/36814-ds916-emby-transcoding-performance/?p=377596)

 

The workaround we created dynamically switches the version of FFmpeg being used based on what Emby Server is requesting; if you've applied the change detailed at the top of this thread.

 

That's why you're seeing an older version than what might be expected above.

 

@@xxJonoxx, thanks for the link above, I'll take a look and see if there is anything we can take advantage of there and integrate into the solution.

 

Best

- James

Link to comment
Share on other sites

  • 1 month later...
sonny_life

Hello James,

I have the same issues with DTS audio as xxJonoxx with emby server and ffmpeg set to version 0.0.0. Is there any progress for workaround in this direction?

In Video Station when I try to open a video files with DTS audio it says that the audio format is not supported. When I try to do the same thing with emby server the screen freezes in loading and nothing happens. Perhaps it will be a good idea to be implemented some kind of error message and back button, because I have manually to press browser back button and then refresh the server's content.

Thanks,

Link to comment
Share on other sites

sonny_life

Hello Luke,

Thanks for your reply. If I understand correctly, you want emby server log, is that right?

Regards,

Link to comment
Share on other sites

Yes, thanks.

 

 

 

  • Please attach the server log from the time frame the activity occurred. See the section below titled Emby Server Logs. Please supply the full and complete log file, and avoid attempting to extract relevant sections. Everything is relevant to us. If a server transcoding log was also generated during playback (in the server logs folder), please attach that as well.
Link to comment
Share on other sites

sonny_life

Yes, thanks.

 

Hello Luke,

I sent you the logs. An error message and back button for not playing the dts audio will be very nice for now.

Regards,

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...