[FFmpeg-trac] #8666(undetermined:new): ffmpeg hardware accel command line settings are inconsistent

FFmpeg trac at avcodec.org
Wed May 13 00:26:29 EEST 2020

#8666: ffmpeg hardware accel command line settings are inconsistent
             Reporter:  Va1DER       |                     Type:
                                     |  enhancement
               Status:  new          |                 Priority:  normal
            Component:               |                  Version:
  undetermined                       |  unspecified
             Keywords:               |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
 The way that ffmpeg specifies different hardware acceleration options on
 the command line spans different switch paradigms.

 cuvid (decode) must be specified with with -c:v codec switch.
 cuda (decode) must be specified with -hwaccel cuda

 Additionally, it would be beneficial to separate specifying the
 decoding/encoding hardware from specifying the codec format and to remove
 the requirement to specify the hardware decoding codec.  ffmpeg should
 detect the correct decoder and not require the user to know what the input
 file's codec actually is.

 ffpmeg -vdecoder=cuvid -i input.mkv -vencoder=cuda -c:v hevc output.mp4

 Though this may be a step too far, it would also be beneficial to divorce
 the codec method from the codec library.  In other words, stop using the
 -c:v to tell ffmpeg what library to use. libx264, h264_qsv, h264_nvenc,
 h264_cuvid and others are all h.264 "codec" names in ffpmeg.  It would be
 much cleaner to:

 ffmpeg -i input.mkv -vencoder=software -c:v h264 output.mp4
 ffpmeg -i input.mkv -vencoder=cuda -c:v h264 output.mp4
 ffpmeg -i input.mkv -vencoder=qsv -c:v h264 output.mp4

 or, if you need fine grained specification of the actual software library
 where there are multiple libraries providing the same codec, then:

 ffmpeg -i input.mkv -vencoder=software:libx264 -c:v h264 output.mp4
 ffmpeg -i input.mkv -vencoder=software:libnewcoolencoder -c:v h264

 It wouldn't be hard to implement this system alongside the old one so as
 not to break current scripts and GUIs.

Ticket URL: <https://trac.ffmpeg.org/ticket/8666>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker

More information about the FFmpeg-trac mailing list