赞
踩
常见的硬件编码包括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
本文福利, 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
解码支持的参数:
- Decoder h264_cuvid [Nvidia CUVID H264 decoder]:
- General capabilities: delay avoidprobe hardware
- Threading capabilities: none
- Supported 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 deinterlacing
- adaptive 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: none
- Supported 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 passes
- medium 2 E..V...... hq 1 pass
- fast 3 E..V...... hp 1 pass
- hp 4 E..V......
- hq 5 E..V......
- bd 6 E..V......
- ll 7 E..V...... low latency
- llhq 8 E..V...... low latency hq
- llhp 9 E..V...... low latency hp
- lossless 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 mode
- vbr 1 E..V...... Variable bitrate mode
- cbr 2 E..V...... Constant bitrate mode
- vbr_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 mode
- cbr_hq 16 E..V...... Constant bitrate high quality mode
- vbr_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 available
- list -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 reference
- each 1 E..V...... Each B frame will be used for reference
- middle 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 - 资料 - 我爱音视频网 - 构建全国最权威的音视频技术交流分享论坛
本文福利, C++音视频学习资料包、技术视频,内容包括(音视频开发,面试题,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)↓↓↓↓↓↓见下面↓↓文章底部点击领取↓↓
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。