Jump to content

Transcoding - HW Acceleration not working properly


iinthesky73

Recommended Posts

pwhodges

I have a similar card (1050 rather than 1060), and to run it headless (as I do) it was necessary to provide a dummy monitor to get hardware encoding recognised.

Link to comment
Share on other sites

nonyhaha

I just got back home, I reattached the dummy to be able to start nvidia control panel. I thought I might be able to override some settings in 3d, but nothing to do there. I chose the Nvidia card as main on Emby server exe. 

 

I rad Plex as administrator, no luck still. 

Link to comment
Share on other sites

nonyhaha

@@nonyhaha - Why do you install GeForce drivers when you have a Quadro board?

 

Try this one instead: https://www.nvidia.com/Download/driverResults.aspx/150305/en-us

 

PS: For Nvidia hardware acceleration you do not need to have any (dummy) monitor connected.

Hi.

Installed these drivers. Reatarted the server.

Encoding still has nothing to choose from. Just like in the picture above. Only decoding can be selected.

 

L.E. 

I opted in Bios for the quadro card to be main also. Nothing changed. 

Also, Handbrake IS using the encoder. I just did a test with h265 nvenc/x265 and the difference in speed is 10fold. 

 

If any logs are needed please ask, or anything else. 

Edited by nonyhaha
Link to comment
Share on other sites

BrettDioson

Hello @@softworkz

 

At the moment I disconnected the dummy, so no monitor on my server. 

 

I installed Nvidia drivers 436.15. (geforce drivers, win 10). I am still using windows server 2016. 

I restarted server. 

In emby settings, i still do not have the preferred hardware encoders as they show up on your picture. 

 

 

I attached the hardware detection, as at the moment I do not think the problem requires more data. 

 

Please let me know. I am going to try a beta version now. 

L.E. Beta looks the same in settings. 

 

 

IMPORTANT EDIT: 

 

I am not sure I mentioned this until now, but, I am using my server headless. I access it over RDP. Emby is not running as a service. 

Must I do something special for nvenc to work? because on google I find a lot of troubles about rdp, and also, Handbrake does not seem to use nvenc when selecting it as an encoder. 

(I used also console connect over IPMI and still no go.)

 

I see this in the hardware detect log.  @@softworkz looks like maybe that card doesn't work with the version of FFMPEG/FFDETECT being used by EMBY?

            "Encoders": [
                {
                    "Number": 2,
                    "Message": "OpenEncodeSessionEx failed: unsupported device"
                }
            ]
Link to comment
Share on other sites

nonyhaha

@@softworkz Is there anything I can change so it might be recognized? Handbrake is able to use the card. In handbrake software x265 speed is 15 fps and nvenc h265 speed is 220 fps.

 

I reactivated my plex pass also, and plex is not able to hardware transcode eirther. The thing which I find interesting is that in their requirements list, there is mentioned that Intel Quick Sync is required even to use nvenc. 

I am waiting for a reply there too. 

 

Is there any chance there is a correlation with Emby case? 

L.E. I see this should not be an issue. So I am still stuck with hardware decoding buut the encoding is still absent. 

I enabled the P400 as main gpu in BIOS, I enabled auto login in windows 2016 with a dummy display attached. The encoder settings just do not pop up in emby server settings... 

 

There should be an issue with recognising the encoder, but how come as long as the decoder is being recognized and used? :(

 

@@BrettDioson what cpu do you have? Do you have an IGPU also? 

Edited by nonyhaha
Link to comment
Share on other sites

nonyhaha

@softworkz Trying ffdetect.exe on post #90 will end up with the following result in settings: 

 

bub2.png

 

So Might be an issue from ffdetect? 

 

After running ffdetect.exe -hide_banner -show_program_version -loglevel 99 -show_error -show_log 99 -print_format json nvenc I get: 

 

ffdetect version 4.3.0-emby_2019_09_03-g5abbb1430d+3654 Copyright © 2018-2019 softworkz for Emby LLC
  built with gcc 9.2.0 (Rev2, Built by MSYS2 project)
  configuration:  --enable-amf --enable-bzlib --enable-cuvid --enable-d3d11va --enable-dxva2 --enable-iconv --enable-lzma --enable-nvenc --enable-zlib --disable-sdl2 --disable-debug --enable-ffnvcodec --enable-nvdec --enable-gmp --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libdav1d --enable-fontconfig --enable-libass --enable-libbluray --enable-libfreetype --enable-libmfx --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libwavpack --enable-libwebp --enable-libzimg --enable-libshine --enable-gpl --enable-avisynth --enable-libxvid --enable-libaom --enable-version3 --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-libs=-lstdc++ --enable-amf --enable-bzlib --enable-cuvid --enable-d3d11va --enable-dxva2 --enable-iconv --enable-lzma --enable-nvenc --enable-zlib --disable-sdl2 --disable-debug --enable-ffnvcodec --enable-nvdec --enable-gmp --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libdav1d --enable-fontconfig --enable-libass --enable-libbluray --enable-libfreetype --enable-libmfx --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libwavpack --enable-libwebp --enable-libzimg --enable-libshine --enable-gpl --enable-avisynth --enable-libxvid --enable-libaom --enable-version3 --enable-libzvbi --enable-gnutls --extra-libs=-lstdc++
  libavutil      56. 34.100 / 56. 34.100
{
    "ProgramVersion": {
        "Version": "4.3.0-emby_2019_09_03-g5abbb1430d+3654",
        "Copyright": "Copyright © 2018-2019 softworkz for Emby Llc",
        "Compiler": "gcc 9.2.0 (Rev2, Built by MSYS2 project)",
        "Configuration": " --enable-amf --enable-bzlib --enable-cuvid --enable-d3d11va --enable-dxva2 --enable-iconv --enable-lzma --enable-nvenc --enable-zlib --disable-sdl2 --disable-debug --enable-ffnvcodec --enable-nvdec --enable-gmp --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libdav1d --enable-fontconfig --enable-libass --enable-libbluray --enable-libfreetype --enable-libmfx --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libwavpack --enable-libwebp --enable-libzimg --enable-libshine --enable-gpl --enable-avisynth --enable-libxvid --enable-libaom --enable-version3 --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-libs=-lstdc++ --enable-amf --enable-bzlib --enable-cuvid --enable-d3d11va --enable-dxva2 --enable-iconv --enable-lzma --enable-nvenc --enable-zlib --disable-sdl2 --disable-debug --enable-ffnvcodec --enable-nvdec --enable-gmp --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libdav1d --enable-fontconfig --enable-libass --enable-libbluray --enable-libfreetype --enable-libmfx --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libwavpack --enable-libwebp --enable-libzimg --enable-libshine --enable-gpl --enable-avisynth --enable-libxvid --enable-libaom --enable-version3 --enable-libzvbi --enable-gnutls --extra-libs=-lstdc++"
    }Loaded lib: nvcuda.dll
Loaded sym: cuInit
Loaded sym: cuDeviceGetCount
Loaded sym: cuDeviceGet
Loaded sym: cuDeviceGetAttribute
Loaded sym: cuDeviceGetName
Loaded sym: cuDeviceComputeCapability
Loaded sym: cuCtxCreate_v2
Loaded sym: cuCtxSetLimit
Loaded sym: cuCtxPushCurrent_v2
Loaded sym: cuCtxPopCurrent_v2
Loaded sym: cuCtxDestroy_v2
Loaded sym: cuMemAlloc_v2
Loaded sym: cuMemAllocPitch_v2
Loaded sym: cuMemsetD8Async
Loaded sym: cuMemFree_v2
Loaded sym: cuMemcpy2D_v2
Loaded sym: cuMemcpy2DAsync_v2
Loaded sym: cuGetErrorName
Loaded sym: cuGetErrorString
Loaded sym: cuStreamCreate
Loaded sym: cuStreamQuery
Loaded sym: cuStreamSynchronize
Loaded sym: cuStreamDestroy_v2
Loaded sym: cuStreamAddCallback
Loaded sym: cuEventCreate
Loaded sym: cuEventDestroy_v2
Loaded sym: cuEventSynchronize
Loaded sym: cuEventQuery
Loaded sym: cuEventRecord
Loaded sym: cuLaunchKernel
Loaded sym: cuModuleLoadData
Loaded sym: cuModuleUnload
Loaded sym: cuModuleGetFunction
Loaded sym: cuTexObjectCreate
Loaded sym: cuTexObjectDestroy
Loaded sym: cuGLGetDevices_v2
Loaded sym: cuGraphicsGLRegisterImage
Loaded sym: cuGraphicsUnregisterResource
Loaded sym: cuGraphicsMapResources
Loaded sym: cuGraphicsUnmapResources
Loaded sym: cuGraphicsSubResourceGetMappedArray
Loaded sym: cuDeviceGetUuid
Loaded sym: cuImportExternalMemory
Loaded sym: cuDestroyExternalMemory
Loaded sym: cuExternalMemoryGetMappedBuffer
Loaded sym: cuExternalMemoryGetMappedMipmappedArray
Loaded sym: cuMipmappedArrayGetLevel
Loaded sym: cuMipmappedArrayDestroy
Loaded sym: cuImportExternalSemaphore
Loaded sym: cuDestroyExternalSemaphore
Loaded sym: cuSignalExternalSemaphoresAsync
Loaded sym: cuWaitExternalSemaphoresAsync
Loaded lib: nvEncodeAPI64.dll
Loaded sym: NvEncodeAPICreateInstance
Loaded sym: NvEncodeAPIGetMaxSupportedVersion
Loaded Nvenc version 9.1
1 CUDA capable devices found
,
    "Devices": [
        {
            "DeviceIndex": 0,
            "DeviceInfo": {
                "Name": "Quadro P400",
                "Description": "Quadro P400",
                "ComputeCapMajor": 6,
                "ComputeCapMinor": 1,
                "Properties": [
                    "ClockRate": 1252500,
                    "MultiprocessorCount": 2,
                    "Integrated": 0,
                    "CanMapHostMemory": 1,
                    "ComputeMode": 0,
                    "ConcurrentKernels": 1,
                    "PciBusId": 4,
                    "PciDeviceId": 0,
                    "TccDriver": 0,
                    "MemoryClockRate": 2005000,
                    "GlobalMemoryBusWidth": 64,
                    "AsyncEngineCount": 2,
                    "UnifiedAddressing": 1,
                    "PciDomainId": 0,
                    "ComputeCapabilityMajor": 6,
                    "ComputeCapabilityMinor": 1,
                    "ManagedMemory": 1,
                    "MultiGpuBoard": 0,
                    "MultiGpuBoardGroupId": 0
                ]
            },
            "Encoders": [
                {
                    "Number": 2,
                    "Message": "OpenEncodeSessionEx failed: unsupported device"                WHY?
                }
            ]
        }
    ],
    "Log": [
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded lib: nvcuda.dll"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuInit"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuDeviceGetCount"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuDeviceGet"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuDeviceGetAttribute"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuDeviceGetName"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuDeviceComputeCapability"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuCtxCreate_v2"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuCtxSetLimit"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuCtxPushCurrent_v2"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuCtxPopCurrent_v2"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuCtxDestroy_v2"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuMemAlloc_v2"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuMemAllocPitch_v2"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuMemsetD8Async"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuMemFree_v2"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuMemcpy2D_v2"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuMemcpy2DAsync_v2"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuGetErrorName"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuGetErrorString"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuStreamCreate"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuStreamQuery"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuStreamSynchronize"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuStreamDestroy_v2"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuStreamAddCallback"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuEventCreate"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuEventDestroy_v2"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuEventSynchronize"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuEventQuery"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuEventRecord"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuLaunchKernel"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuModuleLoadData"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuModuleUnload"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuModuleGetFunction"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuTexObjectCreate"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuTexObjectDestroy"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuGLGetDevices_v2"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuGraphicsGLRegisterImage"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuGraphicsUnregisterResource"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuGraphicsMapResources"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuGraphicsUnmapResources"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuGraphicsSubResourceGetMappedArray"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuDeviceGetUuid"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuImportExternalMemory"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuDestroyExternalMemory"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuExternalMemoryGetMappedBuffer"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuExternalMemoryGetMappedMipmappedArray"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuMipmappedArrayGetLevel"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuMipmappedArrayDestroy"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuImportExternalSemaphore"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuDestroyExternalSemaphore"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuSignalExternalSemaphoresAsync"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: cuWaitExternalSemaphoresAsync"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded lib: nvEncodeAPI64.dll"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: NvEncodeAPICreateInstance"
        },
        {
            "Level": 48,
            "Category": 0,
            "Message": "Loaded sym: NvEncodeAPIGetMaxSupportedVersion"
        },
        {
            "Level": 40,
            "Category": 0,
            "Message": "Loaded Nvenc version 9.1"
        },
        {
            "Level": 40,
            "Category": 0,
            "Message": "1 CUDA capable devices found"
        }
    ]
}

ffmpeg-transcode-642416f1-3661-4247-bd21-2562c7fe3512_1.txt

Edited by nonyhaha
Link to comment
Share on other sites

BrettDioson

@softworkz Trying ffdetect.exe on post #90 will end up with the following result in settings:

 

So Might be an issue from ffdetect?

 

After running ffdetect.exe -hide_banner -show_program_version -loglevel 99 -show_error -show_log 99 -print_format json amfenc I get:

 

}

@@nonyhaha, I believe amfenc is for AMD graphics cards (which is what I started this thread with before i switched to nvidia because the quality of AMD encoding at the time sucked horribly). I believe you are looking for nvenc instead. Edited by BrettDioson
  • Like 1
Link to comment
Share on other sites

BrettDioson

@@softworkz Is there anything I can change so it might be recognized? Handbrake is able to use the card. In handbrake software x265 speed is 15 fps and nvenc h265 speed is 220 fps.

 

I reactivated my plex pass also, and plex is not able to hardware transcode eirther. The thing which I find interesting is that in their requirements list, there is mentioned that Intel Quick Sync is required even to use nvenc. 

I am waiting for a reply there too. 

 

Is there any chance there is a correlation with Emby case? 

L.E. I see this should not be an issue. So I am still stuck with hardware decoding buut the encoding is still absent. 

I enabled the P400 as main gpu in BIOS, I enabled auto login in windows 2016 with a dummy display attached. The encoder settings just do not pop up in emby server settings... 

 

There should be an issue with recognising the encoder, but how come as long as the decoder is being recognized and used? :(

 

@@BrettDioson what cpu do you have? Do you have an IGPU also? 

 

I have an HP ProLiant ML350p.  dual Xeon E5-2620v2's.  no iGPU but I have an iLO which is a Matrox G200.

 

More than likely your issue stems from FFDETECT needing to be modified to see your card's capability since for some reason it is coming back with different information than then GeForce Pascal cards do (such as my GTX1060).  AFAIK, @@softworkz is the only one that can help with that.

Link to comment
Share on other sites

nonyhaha

Got home, opened the magic box, connected monitor, kb/mouse to the server. restarted. selected the monitor to be the main and only display. restarted emby server. 

SAME RESULT. no encoders in the settings tab. 

 

Installed emby server on my desktop. added the premiere key. Hardware transcoding automatically set as yes. If I select advanced, everything shows up including encoders. got the p400 out of the server and put it in the desktop, taking out the gtx1050ti. no drivers modification, everything just works.

 

i really do not know what to do or say.

Link to comment
Share on other sites

BrettDioson

so it works if you have the gtx1050 in, then you pull out the gtx and put in the Quadro and it now shows the quadro for encoding?

 

What if you do the same thing on the server?  if you put the GTX in the server, setup encoding then pull it out and replace it with the quadro will the quadro show up?

Link to comment
Share on other sites

nonyhaha

At the moment i can't do this. I do this as the server is in a box on a wall. In the next days i will take it down and see what i can manage to test. At this moment the server is running without a dedicated gpu.

Link to comment
Share on other sites

@@nonyhaha -  I don't have much ideas about what could cause that error on your server. I'm pretty sure at least, that it's not a problem from our side that we could fix in any way.

 

It's a singular occurrence, I've never seen this error before (error initializing nvenc). 

At least you've confirmed that it's not a problem of the hardware.

 

My best bet would be to look into the driver installation. Try uninstalling and removing all Nvidia stuff you can see, reboot, reinstall the latest Quadro driver.

Link to comment
Share on other sites

nonyhaha

Thank you for the reply.

 

The only thing i do not want to do is reinstall windows. Everything elae is ok. I have some vm's and it would take too long to set back up wvwrything. I will try to remove all nvidia stuff and also reinstall emby.

Link to comment
Share on other sites

You can skip reinstalling emby. That won't make any difference in hardware detection.

ffdetect.exe is 100% self-contained and independent. It doesn't require any dlls, registry entries or other files and it doesn't even care whether Emby is installed or not.

Link to comment
Share on other sites

nonyhaha

Hello.

Yesterday i got my server down.

Used ddu to remove everything from nvidia.

Installed latest quadro win 2016 drivers. Same result.

Switched to my gtx 1050ti. Same result. Decoders all available but no encoders.

 

After reading a lot of posts on plex forum also looks like there is a problem with transcoding using gpu on win server 2016 and i could not find a solution.

 

At the moment i am still investigating but my hopes are not so high.

 

If someone here is able to tell me what to try or what to check, i would highly appreciate it.

 

Fyi... Media foundation feature is added. I also tried reinstalling it. When this is uninstalled, the encoders are gone too.

Thanks.

Edited by nonyhaha
Link to comment
Share on other sites

nonyhaha

Another "yesterday" update:

 

Removed my os ssd, replaced it with test hdd. Installed win server 2019. Of course, encoding shows up...

 

I still have the 2016 win on the main ssd. For a few days. In case somebody wants to test something.

 

I managed to easyly migrate my vms so i will add all the remaining features I had and will say goodbye to win server 2016.

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...