Hardware transcoding on my laptop

I was running channels in an Ubuntu VM inside windows 8.1. I just migrated the DVR to windows on the same laptop so i could shut down the VM. That went fine. I was hoping that after migrating that the transcoding would switch to hardware. My laptop is an old thinkpad W510 with an nvidia quadro 1000M + Intel HD Graphics 3000. Are either of these adapters supported? Software transcoding works fine since it has an i7, but would be nice to use the adapter if it’s possible

The nvidia should work for hardware transcoding. You may need a newer driver: http://www.nvidia.com/download/driverResults.aspx/115278/en-us

I just installed that driver - it still is set to software. Do I have to change a setting or config file to get it to try hardware?

You’d have to restart the DVR server since it only checks on startup. Right click on the channels logo in the Task bar, select Exit, then go to Start Menu and type Channels DVR to start it again.

I did that - and also restarted the whole computer. Not a huge deal for me just a nice to have. I dont see anything in the log file indicating a success or failure for hardware transcoding. If you want me to continue trying things I am willing to if you want to try to fix this. But not an immediate need for me so if you have more pressing matters that’s fine and just throw this on the backlog for future.

Strange.

Try running this command in a console and post all the output:

c:\programdata\channelsdvr\latest\ffmpeg.exe -hide_banner -loglevel verbose -f lavfi -t 5 -i color=black:640x480 -c:v h264_nvenc -profile:v high -level 42 -f null -y nul

C:\Windows\system32>c:\programdata\channelsdvr\latest\ffmpeg.exe -hide_banner -l
oglevel verbose -f lavfi -t 5 -i color=black:640x480 -c:v h264_nvenc -profile:v
high -level 42 -f null -y nul
[Parsed_color_0 @ 00000000005d8100] size:640x480 rate:25/1 duration:-1.000000 sa
r:1/1
Input #0, lavfi, from ‘color=black:640x480’:
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: rawvideo, 1 reference frame (I420 / 0x30323449), yuv420p
, 640x480 [SAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
[graph 0 input from stream 0:0 @ 0000000003008960] w:640 h:480 pixfmt:yuv420p tb
:1/25 fr:25/1 sar:1/1 sws_param:flags=2
[h264_nvenc @ 0000000001df8000] Cannot load nvEncodeAPI64.dll
[h264_nvenc @ 0000000001df8000] Nvenc unloaded
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (h264_nvenc))
Error while opening encoder for output stream #0:0 - maybe incorrect parameters
such as bit_rate, rate, width or height

Hmm this should have been installed by the new driver.

Just googling the error, seems maybe i need to uninstall the old nvidia driver before installing the new. I will try that and post back

Maybe try http://www.nvidia.com/Download/Scan.aspx?lang=en-us to see what driver it recommends

I manually copied nvencodeapi.dll and nvencodeapi64.dll from the driver store to C:\ProgramData\ChannelsDVR\latest\ and now i get this. So I assume my card just isn’t supported:

C:\Windows\system32>c:\programdata\channelsdvr\latest\ffmpeg.exe -hide_banner -l
oglevel verbose -f lavfi -t 5 -i color=black:640x480 -c:v h264_nvenc -profile:v
high -level 42 -f null -y nul
[Parsed_color_0 @ 00000000003886c0] size:640x480 rate:25/1 duration:-1.000000 sa
r:1/1
Input #0, lavfi, from ‘color=black:640x480’:
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: rawvideo, 1 reference frame (I420 / 0x30323449), yuv420p
, 640x480 [SAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
[graph 0 input from stream 0:0 @ 0000000003025940] w:640 h:480 pixfmt:yuv420p tb
:1/25 fr:25/1 sar:1/1 sws_param:flags=2
[h264_nvenc @ 0000000001e19880] Loaded Nvenc version 7.1
[h264_nvenc @ 0000000001e19880] Nvenc initialized successfully
[h264_nvenc @ 0000000001e19880] 1 CUDA capable devices found
[h264_nvenc @ 0000000001e19880] [ GPU #0 - < Quadro 1000M > has Compute SM 2.1 ]

[h264_nvenc @ 0000000001e19880] does not support NVENC
[h264_nvenc @ 0000000001e19880] No NVENC capable devices found
[h264_nvenc @ 0000000001e19880] Nvenc unloaded
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (h264_nvenc))
Error while opening encoder for output stream #0:0 - maybe incorrect parameters
such as bit_rate, rate, width or height

Yea, sounds like it doesn’t support hardware encoding.

The Intel Graphics should, but so far I haven’t found a way to use that on windows when it’s not the active graphics device. Will look into it.

I’ll disable the nvidia card in the bios tonight when I get home and try just the intel graphics. Will report back

1 Like

I’m also wondering if this isn’t working because I am using remote desktop to run the command. I know graphics functions can sometimes act weird over RDP. Will try that too from the terminal tonight.

1 Like

OK - I disabled the nvidia card and only have the intel HD graphics 3000 now. It is still showing only software. My CPU is the i7-2760QM which supports intel quick sync - https://ark.intel.com/products/53474/Intel-Core-i7-2760QM-Processor-6M-Cache-up-to-3_50-GHz

thought about it some more so I updated to the newest driver for intel HD 3000 and it still is showing software.

Is there an equivelant test command for testing quicksync?

C:\Windows\system32>c:\programdata\channelsdvr\latest\ffmpeg.exe -hide_banner -l
oglevel verbose -f lavfi -t 5 -i color=black:640x480 -c:v h264_qsv -profile:v hi
gh -level 42 -f null -y nul
[Parsed_color_0 @ 0000000001bf3ee0] size:640x480 rate:25/1 duration:-1.000000 sa
r:1/1
Input #0, lavfi, from ‘color=black:640x480’:
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: rawvideo, 1 reference frame (I420 / 0x30323449), yuv420p
, 640x480 [SAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
[graph 0 input from stream 0:0 @ 0000000002f367a0] w:640 h:480 pixfmt:yuv420p tb
:1/25 fr:25/1 sar:1/1 sws_param:flags=2
[auto-inserted scaler 0 @ 0000000002f36520] w:iw h:ih flags:‘bicubic’ interl:0
[format @ 0000000002f36940] auto-inserting filter ‘auto-inserted scaler 0’ betwe
en the filter ‘Parsed_null_0’ and the filter ‘format’
[auto-inserted scaler 0 @ 0000000002f36520] w:640 h:480 fmt:yuv420p sar:1/1 -> w
:640 h:480 fmt:nv12 sar:1/1 flags:0x4
[h264_qsv @ 0000000001cd7620] Error initializing an internal MFX session
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (h264_qsv))
Error while opening encoder for output stream #0:0 - maybe incorrect parameters
such as bit_rate, rate, width or height

Use this to ensure drivers are up to date: www.intel.com/content/www/us/en/support/detect.html

Yes, i did. Although it didnt show an update for my graphics driver so i manually installed the newest driver the HD graphics 3000. I also checked with the lenovo site. My driver is the newest one available (although still from 2015).

Really strange. When I run the same command:

I see:

[h264_qsv @ 0000000000ddc060] Initialized an internal MFX session using hardware accelerated implementation

In this case, its loading libmfxhw64.dll, so maybe its having a hard time finding that just like it did with the nvenc dll?

I copied the DLL into the install folder and it didnt make a difference. Not sure what else to try. I am fine with just letting this go for now. If you think of anything though let me know and i’ll try it.