[FFmpeg-devel] [PATCH] avcodec/nvenc: Add support for H.265 encoding

Ali KIZIL alikizil at gmail.com
Thu Mar 26 12:30:19 CET 2015


Philip Langdale <philipl <at> overt.org> writes:

> 
> On Wed, 25 Mar 2015 21:52:54 +0000 (UTC)
> Ali KIZIL <alikizil <at> gmail.com> wrote:
> 
> > 
> > The update broken the general usage:
> > 
> > ./ffmpeg -loglevel info -re -i /root/bunny.mp4 -vcodec nvenc -preset
> > hp -fflags +genpts -vb 24000k -minrate 24000k -maxrate 24000k
> > -bufsize 48000k -muxrate 26000k -cbr 1 -2pass 0 -r 50 -g 100 -
pix_fmt
> > yuv420p - acodec aac -strict -2 -ac 2 -ar 48000 -ab 256k
> > -flush_packets 0 - packetsize 188 -y -f mpegts out.ts
> > 
> > ./ffmpeg -loglevel info -re -i /root/bunny.mp4 -vcodec nvenc_h265 -
> > preset hp -fflags +genpts -vb 24000k -minrate 24000k -maxrate 24000k 
-
> > bufsize 48000k -muxrate 26000k -cbr 1 -2pass 0 -r 50 -g 100 -pix_fmt 
> > yuv420p -acodec aac -strict -2 -ac 2 -ar 48000 -ab 256k
> > -flush_packets 0 -packetsize 188 -y -f mpegts out.ts
> > 
> > FFmpeg stucks, does not work for both. 
> > 
> > Before with nvenc work working fine with above commands. It looks
> > like - g parameter, -muxrate, -flush_packtes stuck FFmpeg with this
> > update. 
> > 
> > Below line works:
> > 
> > ./ffmpeg -loglevel verbose -i /root/bunny.mp4 -vcodec nvenc_h265
> > -preset hp -r 50  -y -f mpegts out.ts
> 
> Yes - it's because I tried to share the class instance between the two
> encoders, which doesn't work. I'm about to push a fix. Thanks for the
> heads up.
> 
> --phil
> 

It works fine now Phil. One more comment:

I have a GTX 980. It can encode upto 30-33 fps for 4K 60fps YUV Raw 
input file using nvenc_h265 avcodec with FFmpeg. First a side, It looked 
to me like lack of performance of card. However; after I split the video 
with crop filter into 2:

/opt/ffmpeghw/bin/ffmpeg -video_size 3840x2160 -framerate 50 -i 
/Projects/YUV/soccer.yuv -vcodec nvenc_h265 -an -filter:v 
"crop=in_w:in_h/2:0:0" -r 50 -g 50 -preset hp -f hevc top.hevc

/opt/ffmpeghw/bin/ffmpeg -video_size 3840x2160 -framerate 50 -i 
/Projects/YUV/soccer.yuv -vcodec nvenc_h265 -an -filter:v 
"crop=in_w:in_h/2:0:in_h/2" -r 50 -g 50 -preset hp -f hevc bottom.hevc

When I run them at the same time, both can be encoded with 50 fps. I 
tried to joing output files with padding but FFmpeg needs re-encoding 
and it makes no sense.

Do you have any comment or idea to use full performance of the card over 
a single ffmpeg nvenc_h265 instance ?

Additional note: GTX cards can suport up to 2 HEVC encoding at the same 
time (as limitation.). 





More information about the ffmpeg-devel mailing list