Jump to content

GPU Transcoding (Intel QuickSync and nVidia NVENC)


witteschnitte

Recommended Posts

hope__silent

Okay, good to know about the browser. I've also noticed that when I change the bitrate the file will restart all the way to the beginning, is this intended behavior? Is there anything else I can offer to help fix the mpeg2 issues? That's pretty much my entire use case, live tv streams in mpeg2, so I'm definitely invested in getting it working. If it helps to know, before I built this machine, I tested out emby (and hardware transcoding) on my main machine with a gtx 1060, nvenc handled mpeg2 just fine, so at least you know it's working on that side of things.

Edited by hope__silent
Link to comment
Share on other sites

If this is specific to hardware encoding then we need help from the community, because as we've said many times, we don't have all the answers yet and that's why the feature is labeled experimental. It will be useful to know which of these issues occur without hardware encoding enabled, and if they do, then please make sure to open new, separate topics for them.

Link to comment
Share on other sites

hope__silent

Okay, it happens with and without quicksync enabled, only with my h264 file however, the mpeg2 file will let me change the bitrate as often as I like to any option and it resumes to where it was in the video. I will make a new post in hopefully the right subforum.

Link to comment
Share on other sites

I've GeForce GTX 750 Ti which is Maxwell based; I assume this card is NVENC capable; I need to understand about the ffmpeg as I asked in a previous post to be able to test.

 

My card is installed on Windows 10 box with latest drivers, I downloaded ffmpeg build from Zeranoe website; but the CPU load is still high when transcoding however I don't see much load on GPU.

 

My question, do I need to build my own ffmpeg to try this GPU transcoding, I mean is it hardware dependent so it has to be built in my own instance? if not, can I get a link to download a working ffmpeg with NVENC enabled?

 

regards,

DaN

Edited by DaN
Link to comment
Share on other sites

Latchmor

I've GeForce GTX 750 Ti which is Maxwell based; I assume this card is NVENC capable; I need to understand about the ffmpeg as I asked in a previous post to be able to test.

 

My card is installed on Windows 10 box with latest drivers, I downloaded ffmpeg build from Zeranoe website; but the CPU load is still high when transcoding however I don't see much load on GPU.

 

My question, do I need to build my own ffmpeg to try this GPU transcoding, I mean is it hardware dependent so it has to be built in my own instance? if not, can I get a link to download a working ffmpeg with NVENC enabled?

 

regards,

DaN

 

Hi, I have the same card in a PC (not the emby server) and use ffmpeg manually to convert files. It does use NVENC.  ;)

  • Like 1
Link to comment
Share on other sites

Hi, I have the same card in a PC (not the emby server) and use ffmpeg manually to convert files. It does use NVENC. ;)

Good to assure it's NVENC capable. I've some 4K contents that consumes the CPU power when transcoding, I hope this GPU will make it easier.

 

 

Sent from my iPhone using Tapatalk

Link to comment
Share on other sites

Hi,

i try to compile qsv for ubuntu 12.04.5 as i read on post number #583 but unfortunately sistem stuck's at section linux kernel patch :make modules_install
bring me this error :

root@ubuntu:~/linux-3.14.5# make modules_install
  INSTALL arch/x86/crypto/aes-x86_64.ko
cp: cannot stat `arch/x86/crypto/aes-x86_64.ko': No such file or directory
Can't read private key
make[1]: *** [arch/x86/crypto/aes-x86_64.ko] Error 2
make: *** [_modinst_] Error 2

i use a clean instalation and i do all steps .

If someone would help me are wellcome!
 

Link to comment
Share on other sites

Hi guys, I have some questions related to this topic and maybe you could shed some light on me. Apologizes in advances if some of them have already been answered.

 

I have a very poorly performing Windows 2012 Essentials Home Server based on a J1900 board (only 1884 passmark points). I've been using both the Win 10 and Android client apps on more than 5 devices (by the way I even paid twice for the Android ones because my license was not recognized anymore ... but I have no problem in doing that if it's supporting a little bit your work).

The GPU transcoding based on Intel QSV was a hit and miss so far for me and that is why I need some noobish answers to be able to realize whether I'm doing something stupid and thus do not take full advantage of this unique feature or there are still some uncrossed boundaries.

 

Q1: In order to be able to fully use qsv transcoding can I keep the ffmpeg version that comes with EMBY server (April 2016 version) or do I really need one of Zeranoe's build? When I tried to use some of the builds from Sept. the server refused to initiate the transcoding. Are those builds from Zeranoe only needed for NVENC users?

 

Q2: For the people that have similar builds to mine is it normal that for a 1080p blu-ray rip h.264 level 4.1 23.98 fps the qsv to report only a ratio of 1.74% meaning 40 fps (forced transcoding to 720p 4 mbits Android app)? The Android S4 is on a 5ghz AC network with tested speeds of 70-82 mbits/s and the server is connected to the same network through gigabit ethernet so these are not the limiting factors. I would have had expected more from qsv ... nevertheless the movie is perfectly playable. The test was just to see how transcoding is working because otherwise there is sufficient bandwidth to allow for direct play smooth playback.

 

Q3: Are PGS subtitles supported for burn in? Whenever I left the original blu-ray subtitle format the playback was very choppy with macro-blocks / artifacts. After switching to external .srt the movie was fluent again.   

Edited by ionutm80
Link to comment
Share on other sites

shaefurr

Finally decided to give this a go, got the static build from Zeranoe and set the custom ffmpeg and option to nvenc. Almost nothing gets unloaded to the GPU. It does utilize it just not much. Transcoding logs show the FPS went from ~160fps to ~240fps. GPU monitor only shows about 5% usage. Not a huge bump but hey its somewhat working and its better than nothing :P

Link to comment
Share on other sites

shaefurr

Having the fps jump from 160fps to 240fps is a massive improvement. that is 50% faster.

Yeah I guess I just expected more? I think I had it set in my head the GPU would handle almost all the transcoding and the CPU usage would drop drastically, but that wasn't the case :P.

 

Honestly its hard to tell its even doing it, I only noticed because the GPU usage bumped up about from 1% to 3% and the core clock ramps up from its idle state around 150Mhz to its full clock at 1300Mhz.

 

So really there's minimal system impact for increased transcoding speed.

Link to comment
Share on other sites

Guest asrequested

Yeah I guess I just expected more? I think I had it set in my head the GPU would handle almost all the transcoding and the CPU usage would drop drastically, but that wasn't the case :P.

 

Honestly its hard to tell its even doing it, I only noticed because the GPU usage bumped up about from 1% to 3% and the core clock ramps up from its idle state around 150Mhz to its full clock at 1300Mhz.

 

So really there's minimal system impact for increased transcoding speed.

 

lol....I think that just means you have a great GPU  ;)

Link to comment
Share on other sites

dark_slayer

NVENC was intended to allow gamers to encode their game to h264 near real time to be streamed across the network to an Nvidia shield for Gamestream. The selling point was that it only utilized 3-5% of the GPU to accomplish this, thus you wouldn't lose much performance out of your GPU which is primarily needed for the game itself

 

So 3-5% GPU should really be the utilization required to do an h264 encode in real time, at least that fits the intended design. I would even guess there's a soft allocation limit enforced by nvidia drivers, though it's just a guess

  • Like 1
Link to comment
Share on other sites

When I recode files using NVENC, the gpu usage stays at ~3%, but video engine at solid 100%.

 

It's the max you can get with NVENC, I guess you could do better with custom CUDA/OpenCL solution.

  • Like 1
Link to comment
Share on other sites

Well, that's getting more interesting, I noticed my GPU utilization also was around 3% when the CPU utilization is way high, always 99~100 CPU with 5% GPU when it comes to 4K content, sometimes jump to 9% and after the recent posts I decided to google it and I found the below:

 

http://www.cnx-software.com/2016/01/04/faster-h-265hevc-video-encoding-with-nvidia-gtx960-gpu-and-ffmpeg/

 

please read this 2 posts:

 

Frank wrote:

I’m only getting around 2x realtime doing a 1080p encode using nvenc_hevc on a 1060 (3 gig) using latest snapshot of ffmpeg. nvidia-smi shows about 200m of memory use, about 3% on gpu-util and does show ffmpeg process. Driver is 367.35. ffmpeg is hovering around 97% in top command. This is on an i5 cpu (2500k I think). Any idea why so slow?

 

cnxsoft replied:

@Frank 

It looks like ffmpeg may be using software encoding with the CPU instead of encoding with the GPU.

 

It could be Zeranoe builds that's forcing the CPU utilization along with NVENC.

Edited by DaN
Link to comment
Share on other sites

Guest plexman

Hi,

i try to compile qsv for ubuntu 12.04.5 as i read on post number #583 but unfortunately sistem stuck's at section linux kernel patch :make modules_install

bring me this error :

root@ubuntu:~/linux-3.14.5# make modules_install

  INSTALL arch/x86/crypto/aes-x86_64.ko

cp: cannot stat `arch/x86/crypto/aes-x86_64.ko': No such file or directory

Can't read private key

make[1]: *** [arch/x86/crypto/aes-x86_64.ko] Error 2

make: *** [_modinst_] Error 2

 

i use a clean instalation and i do all steps .

If someone would help me are wellcome!

 

I would suggest using VA-API in linux instead of QSV because of the needed kernel. And if you can, upgrade to 16.04.1 because it is easier to do hardware transcoding. Check my post -> https://emby.media/community/index.php?/topic/31174-hardware-encoding-on-ubuntu-server/?p=369730

Link to comment
Share on other sites

Hi ,

read you're message and i agreed all.

my question are :

can we abbilitate VA API to be used as stand alone without using emby?

so can we build ffmpeg module linking the correct path for VA API libs?

Link to comment
Share on other sites

Hi ,

read you're message and i agreed all.

my question are :

can we abbilitate VA API to be used as stand alone without using emby?

so can we build ffmpeg module linking the correct path for VA API libs?

 

So you're saying in a way that Emby won't even know about it? Like for instance, Emby requests libx264 but va api is used?

Link to comment
Share on other sites

Enabled VA-API Hardware transcoding in Emby settings, and added de VA-API Device...

That i want to say , maybe my english is not so acurately.

When we use a 16.x version sistem come inside vith va api.

but we enable this function by pannel.

is this an alternative

to tell buider ffmpeg to point to the corect path of libs so we can use ffmpeg not only inside emby but to do some extra test ?

Link to comment
Share on other sites

Just to add my test results here, system: CPU J1900, 8GB DDR3 1600, Windows Server 2012 Essentials, Intel Gigabit CT ethernet adapter: 

- qsv transcode 1080p 23fps h.264 L4.1 .mkv with AC3 5.1 and .srt subtitles to Chromecast 2: 41-44 fps, CPU load 40% with random spikes to 55%

- qsv transcode 1080p 23fps VC1 .mkv with AC3 5.1 and .srt subtitles to Chromecast 2: 38 fps, same CPU load however it seems that qsv needs some seconds at the beginning of the movie to catch-up and go above movie framerate

 

Can somebody else share their results with this CPU, J1900? 

Link to comment
Share on other sites

23fps is not to lower?

Can you post txt log, i supose is more useful.

23fps is the original (actually 23,976), qsv transcodes at 41-44 fps for h.264 and 38fps for VC1 in both cases higher than real time so everything ok.

I will test two simultaneous streams tonight to see what happens then and I will also let DTS-HD / TrueHD audio streams and PGS subtitles.

 

For me however was quite a surprise to see that transcoding was needed for Chromecast since all perquisites were met as per Emby Wiki:

- .mkv container,

- h.264 4.1 codec,

- AAC audio stream inside .mkv created with eac3to and Nero encoder (I have original track either DTS-HD or TrueHD but also AC3 and AAC created from the original),

- .srt subtitles.

What could be the issue? I was expecting direct play as is the case for my Samsung Galaxy S4.

 

Another issue was that when I was trying to play the .mkv file with VC1 stream on my S4 I got direct play showing in Emby server but on the S4 there was no image, sound and subtitles only.

 

I will come back with the logs.

Edited by ionutm80
  • Like 1
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...