当前位置:   article > 正文

ffmpeg硬件编解码Nvidia GPU_h264_cuvid

h264_cuvid

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

首先理解一下概念,Nvidia中文名英伟达是一个厂商名字,GPU则是这个厂商生产的显卡里的一个个图像处理的逻辑单元,它主要是作图片处理,但有逻辑处理的能力,所以可以替cpu分担一些逻辑处理压力。

了解一下ffmpeg对Nvidia的GPU编码支持哪些参数,可以通过

ffmpeg -h encoder=h264_nvenc

可以看到编码的参数与x264相比有些类似,但少很多,不过关键的都在。

解码时ffmpeg对它的参数支持查看:

ffmpeg -h decoder=h264_cuvid

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

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

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

Supported pixel formats: cuda nv12 p010le

本文福利, C++音视频学习资料包、技术视频,内容包括(音视频开发,面试题,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)↓↓↓↓↓↓见下面↓↓文章底部点击领取↓↓ 

举一个硬件编解码的例子:

ffmpeg -hwaccel cuvid -vcodec h264_cuvid -i input.mp4 -vf scale_npp=1920:1080 -vcodec h264_nvenc -acodec copy -f mp4 -y output.mp4

解码支持的参数:

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

编码支持的参数:

  1. Encoder h264_nvenc [NVIDIA NVENC H.264 encoder]:
  2. General capabilities: delay hardware
  3. Threading capabilities: none
  4. Supported hardware devices: cuda cuda
  5. Supported pixel formats: yuv420p nv12 p010le yuv444p p016le yuv444p16le bgr0 rgb0 cuda
  6. h264_nvenc AVOptions:
  7. -preset <int> E..V...... Set the encoding preset (from 0 to 11) (default medium)
  8. default 0 E..V......
  9. slow 1 E..V...... hq 2 passes
  10. medium 2 E..V...... hq 1 pass
  11. fast 3 E..V...... hp 1 pass
  12. hp 4 E..V......
  13. hq 5 E..V......
  14. bd 6 E..V......
  15. ll 7 E..V...... low latency
  16. llhq 8 E..V...... low latency hq
  17. llhp 9 E..V...... low latency hp
  18. lossless 10 E..V......
  19. losslesshp 11 E..V......
  20. -profile <int> E..V...... Set the encoding profile (from 0 to 3) (default main)
  21. baseline 0 E..V......
  22. main 1 E..V......
  23. high 2 E..V......
  24. high444p 3 E..V......
  25. -level <int> E..V...... Set the encoding level restriction (from 0 to 51) (default auto)
  26. auto 0 E..V......
  27. 1 10 E..V......
  28. 1.0 10 E..V......
  29. 1b 9 E..V......
  30. 1.0b 9 E..V......
  31. 1.1 11 E..V......
  32. 1.2 12 E..V......
  33. 1.3 13 E..V......
  34. 2 20 E..V......
  35. 2.0 20 E..V......
  36. 2.1 21 E..V......
  37. 2.2 22 E..V......
  38. 3 30 E..V......
  39. 3.0 30 E..V......
  40. 3.1 31 E..V......
  41. 3.2 32 E..V......
  42. 4 40 E..V......
  43. 4.0 40 E..V......
  44. 4.1 41 E..V......
  45. 4.2 42 E..V......
  46. 5 50 E..V......
  47. 5.0 50 E..V......
  48. 5.1 51 E..V......
  49. -rc <int> E..V...... Override the preset rate-control (from -1 to INT_MAX) (default -1)
  50. constqp 0 E..V...... Constant QP mode
  51. vbr 1 E..V...... Variable bitrate mode
  52. cbr 2 E..V...... Constant bitrate mode
  53. vbr_minqp 8388612 E..V...... Variable bitrate mode with MinQP (deprecated)
  54. ll_2pass_quality 8388616 E..V...... Multi-pass optimized for image quality (deprecated)
  55. ll_2pass_size 8388624 E..V...... Multi-pass optimized for constant frame size (deprecated)
  56. vbr_2pass 8388640 E..V...... Multi-pass variable bitrate mode (deprecated)
  57. cbr_ld_hq 8 E..V...... Constant bitrate low delay high quality mode
  58. cbr_hq 16 E..V...... Constant bitrate high quality mode
  59. vbr_hq 32 E..V...... Variable bitrate high quality mode
  60. -rc-lookahead <int> E..V...... Number of frames to look ahead for rate-control (from 0 to INT_MAX) (default 0)
  61. -surfaces <int> E..V...... Number of concurrent surfaces (from 0 to 64) (default 0)
  62. -cbr <boolean> E..V...... Use cbr encoding mode (default false)
  63. -2pass <boolean> E..V...... Use 2pass encoding mode (default auto)
  64. -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)
  65. any -1 E..V...... Pick the first device available
  66. list -2 E..V...... List the available devices
  67. -delay <int> E..V...... Delay frame output by the given amount of frames (from 0 to INT_MAX) (default INT_MAX)
  68. -no-scenecut <boolean> E..V...... When lookahead is enabled, set this to 1 to disable adaptive I-frame insertion at scene cuts (default false)
  69. -forced-idr <boolean> E..V...... If forcing keyframes, force them as IDR frames. (default false)
  70. -b_adapt <boolean> E..V...... When lookahead is enabled, set this to 0 to disable adaptive B-frame decision (default true)
  71. -spatial-aq <boolean> E..V...... set to 1 to enable Spatial AQ (default false)
  72. -spatial_aq <boolean> E..V...... set to 1 to enable Spatial AQ (default false)
  73. -temporal-aq <boolean> E..V...... set to 1 to enable Temporal AQ (default false)
  74. -temporal_aq <boolean> E..V...... set to 1 to enable Temporal AQ (default false)
  75. -zerolatency <boolean> E..V...... Set 1 to indicate zero latency operation (no reordering delay) (default false)
  76. -nonref_p <boolean> E..V...... Set this to 1 to enable automatic insertion of non-reference P-frames (default false)
  77. -strict_gop <boolean> E..V...... Set 1 to minimize GOP-to-GOP rate fluctuations (default false)
  78. -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)
  79. -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)
  80. -aud <boolean> E..V...... Use access unit delimiters (default false)
  81. -bluray-compat <boolean> E..V...... Bluray compatibility workarounds (default false)
  82. -init_qpP <int> E..V...... Initial QP value for P frame (from -1 to 51) (default -1)
  83. -init_qpB <int> E..V...... Initial QP value for B frame (from -1 to 51) (default -1)
  84. -init_qpI <int> E..V...... Initial QP value for I frame (from -1 to 51) (default -1)
  85. -qp <int> E..V...... Constant quantization parameter rate control method (from -1 to 51) (default -1)
  86. -weighted_pred <int> E..V...... Set 1 to enable weighted prediction (from 0 to 1) (default 0)
  87. -coder <int> E..V...... Coder type (from -1 to 2) (default default)
  88. default -1 E..V......
  89. auto 0 E..V......
  90. cabac 1 E..V......
  91. cavlc 2 E..V......
  92. ac 1 E..V......
  93. vlc 2 E..V......
  94. -b_ref_mode <int> E..V...... Use B frames as references (from 0 to 2) (default disabled)
  95. disabled 0 E..V...... B frames will not be used for reference
  96. each 1 E..V...... Each B frame will be used for reference
  97. middle 2 E..V...... Only (number of B frames)/2 will be used for reference
  98. -a53cc <boolean> E..V...... Use A53 Closed Captions (if available) (default true)
  99. -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 - 资料 - 我爱音视频网 - 构建全国最权威的音视频技术交流分享论坛

本文福利, C++音视频学习资料包、技术视频,内容包括(音视频开发,面试题,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)↓↓↓↓↓↓见下面↓↓文章底部点击领取↓↓ 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/446304
推荐阅读
相关标签
  

闽ICP备14008679号