[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