admin 管理员组

文章数量: 1086929

ffmpeg硬件编解码Nvidia GPU

另一篇:ffmpeg硬编解码 Inter QSV
常见的硬件编码包括Nvidia GPU与Intel QSV两种,还有一些嵌入式平台如树莓派,瑞芯微等。

首先理解一下概念,Nvidia中文名英伟达是一个厂商名字,GPU则是这个厂商生产的显卡里的一个个图像处理的逻辑单元,它主要是作图片处理,但有逻辑处理的能力,所以可以替cpu分担一些逻辑处理压力。
了解一下ffmpeg对Nvidia的GPU编码支持哪些参数,可以通过
ffmpeg -h encoder=h264_nvenc
可以看到编码的参数与x264相比有些类似,但少很多,不过关键的都在。
解码时ffmpeg对它的参数支持查看:

ffmpeg -h decoder=h264_cuvid

其中同时可以看到编码支持的像素格式包括:

Supported pixel formats: yuv420p nv12 p010le yuv444p p016le
yuv444p16le bgr0 rgb0 cuda

解码支持的像素格式很少:

Supported pixel formats: cuda nv12 p010le

举一个硬件编解码的例子:
ffmpeg -hwaccel cuvid -vcodec h264_cuvid -i input.mp4 -vf scale_npp=1920:1080 -vcodec h264_nvenc -acodec copy -f mp4 -y output.mp4

解码支持的参数:

Decoder h264_cuvid [Nvidia CUVID H264 decoder]:General capabilities: delay avoidprobe hardware Threading capabilities: noneSupported hardware devices: cuda Supported pixel formats: cuda nv12 p010le p016le
h264_cuvid AVOptions:-deint             <int>        .D.V...... Set deinterlacing mode (from 0 to 2) (default weave)weave           0            .D.V...... Weave deinterlacing (do nothing)bob             1            .D.V...... Bob deinterlacingadaptive        2            .D.V...... Adaptive deinterlacing-gpu               <string>     .D.V...... GPU to be used for decoding-surfaces          <int>        .D.V...... Maximum surfaces to be used for decoding (from 0 to INT_MAX) (default 25)-drop_second_field <boolean>    .D.V...... Drop second field when deinterlacing (default false)-crop              <string>     .D.V...... Crop (top)x(bottom)x(left)x(right)-resize            <string>     .D.V...... Resize (width)x(height)

编码支持的参数:

Encoder h264_nvenc [NVIDIA NVENC H.264 encoder]:General capabilities: delay hardware Threading capabilities: noneSupported hardware devices: cuda cuda Supported pixel formats: yuv420p nv12 p010le yuv444p p016le yuv444p16le bgr0 rgb0 cuda
h264_nvenc AVOptions:-preset            <int>        E..V...... Set the encoding preset (from 0 to 11) (default medium)default         0            E..V...... slow            1            E..V...... hq 2 passesmedium          2            E..V...... hq 1 passfast            3            E..V...... hp 1 passhp              4            E..V...... hq              5            E..V...... bd              6            E..V...... ll              7            E..V...... low latencyllhq            8            E..V...... low latency hqllhp            9            E..V...... low latency hplossless        10           E..V...... losslesshp      11           E..V...... -profile           <int>        E..V...... Set the encoding profile (from 0 to 3) (default main)baseline        0            E..V...... main            1            E..V...... high            2            E..V...... high444p        3            E..V...... -level             <int>        E..V...... Set the encoding level restriction (from 0 to 51) (default auto)auto            0            E..V...... 1               10           E..V...... 1.0             10           E..V...... 1b              9            E..V...... 1.0b            9            E..V...... 1.1             11           E..V...... 1.2             12           E..V...... 1.3             13           E..V...... 2               20           E..V...... 2.0             20           E..V...... 2.1             21           E..V...... 2.2             22           E..V...... 3               30           E..V...... 3.0             30           E..V...... 3.1             31           E..V...... 3.2             32           E..V...... 4               40           E..V...... 4.0             40           E..V...... 4.1             41           E..V...... 4.2             42           E..V...... 5               50           E..V...... 5.0             50           E..V...... 5.1             51           E..V...... -rc                <int>        E..V...... Override the preset rate-control (from -1 to INT_MAX) (default -1)constqp         0            E..V...... Constant QP modevbr             1            E..V...... Variable bitrate modecbr             2            E..V...... Constant bitrate modevbr_minqp       8388612      E..V...... Variable bitrate mode with MinQP (deprecated)ll_2pass_quality 8388616      E..V...... Multi-pass optimized for image quality (deprecated)ll_2pass_size   8388624      E..V...... Multi-pass optimized for constant frame size (deprecated)vbr_2pass       8388640      E..V...... Multi-pass variable bitrate mode (deprecated)cbr_ld_hq       8            E..V...... Constant bitrate low delay high quality modecbr_hq          16           E..V...... Constant bitrate high quality modevbr_hq          32           E..V...... Variable bitrate high quality mode-rc-lookahead      <int>        E..V...... Number of frames to look ahead for rate-control (from 0 to INT_MAX) (default 0)-surfaces          <int>        E..V...... Number of concurrent surfaces (from 0 to 64) (default 0)-cbr               <boolean>    E..V...... Use cbr encoding mode (default false)-2pass             <boolean>    E..V...... Use 2pass encoding mode (default auto)-gpu               <int>        E..V...... Selects which NVENC capable GPU to use. First GPU is 0, second is 1, and so on. (from -2 to INT_MAX) (default any)any             -1           E..V...... Pick the first device availablelist            -2           E..V...... List the available devices-delay             <int>        E..V...... Delay frame output by the given amount of frames (from 0 to INT_MAX) (default INT_MAX)-no-scenecut       <boolean>    E..V...... When lookahead is enabled, set this to 1 to disable adaptive I-frame insertion at scene cuts (default false)-forced-idr        <boolean>    E..V...... If forcing keyframes, force them as IDR frames. (default false)-b_adapt           <boolean>    E..V...... When lookahead is enabled, set this to 0 to disable adaptive B-frame decision (default true)-spatial-aq        <boolean>    E..V...... set to 1 to enable Spatial AQ (default false)-spatial_aq        <boolean>    E..V...... set to 1 to enable Spatial AQ (default false)-temporal-aq       <boolean>    E..V...... set to 1 to enable Temporal AQ (default false)-temporal_aq       <boolean>    E..V...... set to 1 to enable Temporal AQ (default false)-zerolatency       <boolean>    E..V...... Set 1 to indicate zero latency operation (no reordering delay) (default false)-nonref_p          <boolean>    E..V...... Set this to 1 to enable automatic insertion of non-reference P-frames (default false)-strict_gop        <boolean>    E..V...... Set 1 to minimize GOP-to-GOP rate fluctuations (default false)-aq-strength       <int>        E..V...... When Spatial AQ is enabled, this field is used to specify AQ strength. AQ strength scale is from 1 (low) - 15 (aggressive) (from 1 to 15) (default 8)-cq                <float>      E..V...... Set target quality level (0 to 51, 0 means automatic) for constant quality mode in VBR rate control (from 0 to 51) (default 0)-aud               <boolean>    E..V...... Use access unit delimiters (default false)-bluray-compat     <boolean>    E..V...... Bluray compatibility workarounds (default false)-init_qpP          <int>        E..V...... Initial QP value for P frame (from -1 to 51) (default -1)-init_qpB          <int>        E..V...... Initial QP value for B frame (from -1 to 51) (default -1)-init_qpI          <int>        E..V...... Initial QP value for I frame (from -1 to 51) (default -1)-qp                <int>        E..V...... Constant quantization parameter rate control method (from -1 to 51) (default -1)-weighted_pred     <int>        E..V...... Set 1 to enable weighted prediction (from 0 to 1) (default 0)-coder             <int>        E..V...... Coder type (from -1 to 2) (default default)default         -1           E..V...... auto            0            E..V...... cabac           1            E..V...... cavlc           2            E..V...... ac              1            E..V...... vlc             2            E..V...... -b_ref_mode        <int>        E..V...... Use B frames as references (from 0 to 2) (default disabled)disabled        0            E..V...... B frames will not be used for referenceeach            1            E..V...... Each B frame will be used for referencemiddle          2            E..V...... Only (number of B frames)/2 will be used for reference-a53cc             <boolean>    E..V...... Use A53 Closed Captions (if available) (default true)-dpb_size          <int>        E..V...... Specifies the DPB size used for encoding (0 means automatic) (from 0 to INT_MAX) (default 0)

本文标签: ffmpeg硬件编解码Nvidia GPU