Jump to content

GPU Transcoding (Intel QuickSync and nVidia NVENC)


witteschnitte

Recommended Posts

Yea, looks like NVENC was just added.

Also noticed a new util besides ffmpeg, ffplay and ffprobe

 

ffserver is a multimedia streaming server for live broadcasts.

Link to comment
Share on other sites

dark_slayer

QSvsLibXlog.txt

I've been playing with this for a while from the command line.

First I played back a video inside of MB3 and went into the logs and grabbed what it was passing to ffmpeg.

 

Next I run this at the command prompt and watch the frames per second and CPU use.

Next I use the version of ffmpeg provided here in the thread and modify it enough to run.

 

On CPU only I get 118 fps and with GPU QS I get 46 fps

next I strip the GPU command line down to the minimum and get around 150 fps but it's not doing what MB3 needs it to do.

 

In either case the CPU is close to maxed out.  On the GPU version I do see it being used when watching in GPU-Z.

 

So either the CPU option SUPERFAST is faster than GPU transcoding or I think there is a probelm with this version of ffmpeg.

 

Can any of you guys try this yourself and let me know what you find.  At this point I'm at a standstill.

 

Carlo

 

Hey Carlo,

 

I don't know how to run superfast from ffmpeg CLI

 

I've attached a copy/paste from my command prompt. I copied the American Horror Story Pilot (AHS.mkv) over to a directory I keep portable apps in (C:\Apps)

 

I copied the latest ffmpeg from @@mjb2000 's wiki into the same directory. I ran a qsv vs libx264 test on the first 30 seconds.

 

Here are some relevant FPS comparisons for those 30 seconds (from the log, just pasted here if you don't want to open it)

 

QSV

Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (h264_qsv))
Press [q] to stop, [?] for help
frame=  184 fps=0.0 q=-1.0 size=    2970kB time=00:00:07.29 bitrate=3333.1kbits/
frame=  384 fps=383 q=-1.0 size=    6232kB time=00:00:15.64 bitrate=3264.2kbits/
frame=  586 fps=390 q=-1.0 size=    9548kB time=00:00:24.06 bitrate=3250.3kbits/
frame=  720 fps=391 q=-1.0 Lsize=   12852kB time=00:00:29.98 bitrate=3510.7kbits
/s
video:12844kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing
 overhead: 0.062386%

libx264

Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Press [q] to stop, [?] for help
frame=  156 fps=0.0 q=0.0 size=      11kB time=00:00:04.08 bitrate=  21.3kbits/s
frame=  173 fps=173 q=0.0 size=    2353kB time=00:00:04.79 bitrate=4017.6kbits/s
frame=  197 fps=123 q=13.0 size=    5966kB time=00:00:05.79 bitrate=8429.5kbits/
frame=  219 fps=101 q=21.0 size=    7877kB time=00:00:06.71 bitrate=9610.9kbits/
frame=  243 fps= 88 q=25.0 size=    9558kB time=00:00:07.71 bitrate=10149.3kbits
frame=  268 fps= 82 q=28.0 size=   10742kB time=00:00:08.75 bitrate=10046.8kbits
frame=  294 fps= 78 q=31.0 size=   11600kB time=00:00:09.84 bitrate=9654.0kbits/
frame=  323 fps= 75 q=32.0 size=   12460kB time=00:00:11.05 bitrate=9235.1kbits/
frame=  353 fps= 73 q=33.0 size=   13030kB time=00:00:12.30 bitrate=8675.9kbits/
frame=  385 fps= 72 q=33.0 size=   13463kB time=00:00:13.63 bitrate=8086.5kbits/
frame=  414 fps= 71 q=33.0 size=   13856kB time=00:00:14.84 bitrate=7644.5kbits/
frame=  449 fps= 70 q=33.0 size=   14278kB time=00:00:16.30 bitrate=7172.5kbits/
frame=  480 fps= 69 q=33.0 size=   14644kB time=00:00:17.60 bitrate=6816.0kbits/
frame=  516 fps= 70 q=33.0 size=   15006kB time=00:00:19.10 bitrate=6435.1kbits/
frame=  550 fps= 69 q=33.0 size=   15279kB time=00:00:20.52 bitrate=6099.4kbits/
frame=  590 fps= 70 q=33.0 size=   15542kB time=00:00:22.18 bitrate=5738.2kbits/
frame=  630 fps= 70 q=32.0 size=   15774kB time=00:00:23.85 bitrate=5416.4kbits/
frame=  661 fps= 70 q=31.0 size=   15935kB time=00:00:25.15 bitrate=5190.4kbits/
frame=  698 fps= 70 q=31.0 size=   16360kB time=00:00:26.69 bitrate=5020.7kbits/
frame=  720 fps= 65 q=-1.0 Lsize=   17524kB time=00:00:29.94 bitrate=4793.7kbits
/s
video:17517kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing
 overhead: 0.038578%
Link to comment
Share on other sites

dark_slayer

Here is the video info for that test file

 

Video

CodecH264
ProfileHigh
Level41
Resolution1280x720
Aspect ratio16:9
AnamorphicNo
InterlacedNo
Framerate23.97602
Bitrate3751 kbps
Bit depth8 bit
Pixel formatyuv420p

Link to comment
Share on other sites

dark_slayer,

 

I started a new thread here: mediabrowser.tv/community/index.php?/topic/18191-needwant-help-to-make-gpu-transocoding-useful/

 

This has some useful info for changing presets.  What we really want/need to do is compare GPU to CPU using SUPERFAST preset.

 

Your help and testing will be appreciated,

Carlo

Link to comment
Share on other sites

mjb2000

Hi all

 

I've been away for a little bit - I've been busy selling my house and contemplating emigrating abroad!

 

It looks like there is a lot of exciting stuff going on. There has also been a fair amount of progress on the proxy solution which sounds a sensible way to go. There have recently been some updates to the QuickSync ffmpeg code and libmfx so I will try to get on top of those soon to get a new ffmpeg.exe out.

 

M

  • Like 2
Link to comment
Share on other sites

Hi mjb2000, hi All,

 

First thing I want to say is WOW! You've made my day when I have discovered this thread. I'm a long time user of Media Browser since the Classic version. Currently I'm using it as a front-end on my 2 HTPC together with MPC-HC / LAV Filters / madVR. However since I do not have a dedicated server I was forced to use one HTPC as a server also ... but now I have changed my mind and decided to pull the trigger and build one based on the Asrock Q1900-ITX (Celeron J1900 :)). Previously I have tried to look around for media server products that would take advantage of QS for live transcoding since this would allow for passive cooled Atom Bail Trail to become the standard CPUs for home made NAS. Unfortunately the offer was either too expensive (WOWZA) or not very reliable in terms of features (TVersity). 

 

One question though: did the thing with the constant change of the .api solve or we still need to match the version of the server we have with an updated api from you? I think that the most simple solution until the integration of the api becomes automated would be to have access to the MBS installer corresponding to the most current version of your .api. For instance now the .api coresponds to the v3.0.5508.29225 but I cannot find anywhere this MBS version to download ... I know we should update only through automatic updating but in this case a stand alone installer would be very helpfull...

Edited by ima80
Link to comment
Share on other sites

  • 2 weeks later...
badujeff

Hey guys, this is exciting stuff -- I was wondering if anyone has tried building the custom version of ffmpeg against a linux kernel?  I have a situation where I would need the ffmpeg to do transcoding with GPU acceleration, without having the MediaBrowser front end.  Does anyone know if this is possible, or are the changes dependent on specific Windows libraries?

Link to comment
Share on other sites

Probably the closest you will get is what QNAP has done.  You should be able to find their code and with some luck compile it yourself.

Link to comment
Share on other sites

Hi Luke,

 

Is it possible please to get a standalone installer for the dev version v3.0.5508.29225, the one for which there is the last api file from mjb2000?

 

Thanks a lot in advance,

 

KR

Edited by ima80
Link to comment
Share on other sites

  • 2 weeks later...
  • 2 weeks later...
grouik1er

Hello i'm trying this Quicksync Tweak by following this tutorial:

 

I'm in dev Version 3.0.5565.29006

I modify the encoding.xml with the  <H264Encoder>h264_qsv</H264Encoder>

I change the FFMPEG with this one https://github.com/mjb2000/media-autobuild_suite/releases  build on 14 jan 2015

 

I restart The server, test a transcode. I see ffmpeg process at over 30% cpu (i73770k)

 

See the log file, never find utilization of quicksync anywhere i think.

 

 

So i know i forget to change MediaBrowser.Api.Dll but if i make it MediaBrowser Server don't start anymore, i think this is because the DLL is for version v3.0.5508.29225

 

I try to find the 3.0.5508.29225 Media Browser installer but no luck.

Link to comment
Share on other sites

  • 2 weeks later...
tgusler

Meh, should have started with Page 14.  Looking to see if this tweak supports AMD QuickSync or if it is just for Intel's version.

Link to comment
Share on other sites

  • 3 weeks later...
chris89

Hello, I had a question about the best possible way to Capture using MSI Afterburner on specific hardware.

 

I'm on a GTX 580 @ 900Mhz and x2 Intel Xeon X5650's at about 3Ghz per core.

 

I don't have support for NVENC or Intel QuickSync.  So I was wondering can't I still use the older "Cuda" specific encoder? 

 

The only way I can capture fairly efficiently is RTV1 Compression with MKV container.  I like to capture full-frame 60fps at 1080p... However I'd like to have the nice options to have it better for speed or quality and the ability to specify at what bitrate the video and audio captures at...

 

I'd really appreciaite any help...

 

Using RTV1 I usually see a good 20fps reduction so I start out at 70fps, it droops to 40-50fps when capturing.

 

Thanks

Link to comment
Share on other sites

paul777

Hi, just wondering what the status of this is - sounds very interesting, the fork pointed to on the wiki page seems to be a long way behind the master though?

Link to comment
Share on other sites

SilentAssassin

I was just wondering what has happened to GPU transcoding. I've just updated handbrake to version 10 and noticed that it has introduced Intel quicksync encoding and it's fantastic. I can encode 1080p videos at over 200fps using less that 5% CPU.

Link to comment
Share on other sites

AgileHumor

It didn't work using the current FFMPEG builds.    It was requested from dev team that testers prove the concept before they start work on it (get an FFMPEG build that produces improved results using command line).

 

Handbrake isn't on the radar according to statements from core team as it does a small portion of what FFMPEG does.
 

This thread has been deprecated and most recent info here: http://emby.media/community/index.php?/topic/18191-needwant-help-to-make-gpu-transocoding-useful 

Edited by AgileHumor
Link to comment
Share on other sites

handbrake is using ffmpeg just like we are, and we are also staying on top of ffmpeg updates.

Link to comment
Share on other sites

  • 4 weeks later...
coudy

Hi,

I can't find ffmpeg with QuickSync enabled for Linux. Is this feature enabled on Linux ? I have Intel supported CPU.

Do I need only dev server, or I can test it on stable Version 3.0.5607.2 ? (of course, with compatible ffmpeg+qs)

Link to comment
Share on other sites

the community member who began this has not been keeping his patches up to date. recent ffmpeg changelogs indicate they are working on gpu acceleration, so it is my opinion that research needs to be started from the beginning again.

Link to comment
Share on other sites

Tranquil

@Luke:

 

Since Version 2.6, FFMPEG at least supports hardware encoding for nvidias nvenc. Isn't it usable for emby?

Its more easy to upgrade a system with a nvidia gfx card as, for example, an Intel one which maybe need to change MB and CPU as well.

Link to comment
Share on other sites

inkubux

If eventually this becomes stable. Would it be possible to set the WebUI to play x264 with AAC instead of VP8 as an option of course so QuickSync/NVENC works with the Web UI ?

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