繁体   English   中英

FFmpeg:在Windows上使用AMD GPU编码x264?

[英]FFmpeg: Encode x264 with AMD GPU on Windows?

我目前正在尝试使用内置网络摄像头在Windows 10上使用FFmpeg在我的联想笔记本电脑上录制视频。我的目标之一是尽可能降低CPU使用率,这就是为什么我要将h264编码推送到GPU。 现在,我的笔记本电脑在这里变得有点棘手。 因为它使用两个GPU。 第一个GPU是Intel HD 5500图形单元,作为CPU的一部分。 这个最喜欢用于办公室等非要求的应用程序以节省能源。 另一款是AMD R5 M330,将用于游戏等图形密集型应用。

目前,我使用以下命令对Intel HD GPU上的网络摄像头流进行编码:

ffmpeg -f dshow -vcodec mjpeg -video_size 1280x720 -framerate 30 video="Lenovo EasyCamera":audio="Mikrofon (Realtek High Definition Audio)" -c:v h264_qsv -g 60 -q 28 -look_ahead 0 -preset:v faster -c:a aac -q:a 0.6 -r 30 output.mp4

到目前为止这确实有效,但似乎这个GPU没有足够的功率来跟上更高比特率或大量i帧的帧速率。 视频开始缺少并跳过帧。 如果我使用CPU编码一切顺利。

既然我的笔记本电脑得到了第二台具有更多功率的AMD GPU,那么尝试对其进行编码是一个不错的尝试,但我找不到有关如何在Windows 10上对AMD硬件进行编码的任何信息。所以我的问题是: ffmpeg命令如何将AMD硬件用于h264编码?

当前版本的ffmpeg现在支持主要GPU供应商的硬件编码。 以下是h264_amf (H.264)和hevc_amf (H.265或HEVC)编码器的选项,您可以使用AMD显卡,取自ffmpeg -h full

h264_amf AVOptions:
  -usage             <int>        E..V.... Encoder Usage (from 0 to 3) (default transcoding)
     transcoding                  E..V.... Generic Transcoding
     ultralowlatency              E..V.... 
     lowlatency                   E..V.... 
     webcam                       E..V.... Webcam
  -profile           <int>        E..V.... Profile (from 66 to 257) (default main)
     main                         E..V.... 
     high                         E..V.... 
     constrained_baseline              E..V.... 
     constrained_high              E..V.... 
  -level             <int>        E..V.... Profile Level (from 0 to 62) (default auto)
     auto                         E..V.... 
     1.0                          E..V.... 
     1.1                          E..V.... 
     1.2                          E..V.... 
     1.3                          E..V.... 
     2.0                          E..V.... 
     2.1                          E..V.... 
     2.2                          E..V.... 
     3.0                          E..V.... 
     3.1                          E..V.... 
     3.2                          E..V.... 
     4.0                          E..V.... 
     4.1                          E..V.... 
     4.2                          E..V.... 
     5.0                          E..V.... 
     5.1                          E..V.... 
     5.2                          E..V.... 
     6.0                          E..V.... 
     6.1                          E..V.... 
     6.2                          E..V.... 
  -quality           <int>        E..V.... Quality Preference (from 0 to 2) (default speed)
     speed                        E..V.... Prefer Speed
     balanced                     E..V.... Balanced
     quality                      E..V.... Prefer Quality
  -rc                <int>        E..V.... Rate Control Method (from -1 to 3) (default -1)
     cqp                          E..V.... Constant Quantization Parameter
     cbr                          E..V.... Constant Bitrate
     vbr_peak                     E..V.... Peak Contrained Variable Bitrate
     vbr_latency                  E..V.... Latency Constrained Variable Bitrate
  -enforce_hrd       <boolean>    E..V.... Enforce HRD (default false)
  -filler_data       <boolean>    E..V.... Filler Data Enable (default false)
  -vbaq              <boolean>    E..V.... Enable VBAQ (default false)
  -frame_skipping    <boolean>    E..V.... Rate Control Based Frame Skip (default false)
  -qp_i              <int>        E..V.... Quantization Parameter for I-Frame (from -1 to 51) (default -1)
  -qp_p              <int>        E..V.... Quantization Parameter for P-Frame (from -1 to 51) (default -1)
  -qp_b              <int>        E..V.... Quantization Parameter for B-Frame (from -1 to 51) (default -1)
  -preanalysis       <boolean>    E..V.... Pre-Analysis Mode (default false)
  -max_au_size       <int>        E..V.... Maximum Access Unit Size for rate control (in bits) (from 0 to INT_MAX) (default 0)
  -header_spacing    <int>        E..V.... Header Insertion Spacing (from -1 to 1000) (default -1)
  -bf_delta_qp       <int>        E..V.... B-Picture Delta QP (from -10 to 10) (default 4)
  -bf_ref            <boolean>    E..V.... Enable Reference to B-Frames (default true)
  -bf_ref_delta_qp   <int>        E..V.... Reference B-Picture Delta QP (from -10 to 10) (default 4)
  -intra_refresh_mb  <int>        E..V.... Intra Refresh MBs Number Per Slot in Macroblocks (from 0 to INT_MAX) (default 0)
  -coder             <int>        E..V.... Coding Type (from 0 to 2) (default auto)
     auto                         E..V.... Automatic
     cavlc                        E..V.... Context Adaptive Variable-Length Coding
     cabac                        E..V.... Context Adaptive Binary Arithmetic Coding
  -me_half_pel       <boolean>    E..V.... Enable ME Half Pixel (default true)
  -me_quarter_pel    <boolean>    E..V.... Enable ME Quarter Pixel (default true)
  -aud               <boolean>    E..V.... Inserts AU Delimiter NAL unit (default false)
  -log_to_dbg        <boolean>    E..V.... Enable AMF logging to debug output (default false)
hevc_amf AVOptions:
  -usage             <int>        E..V.... Set the encoding usage (from 0 to 3) (default transcoding)
     transcoding                  E..V.... 
     ultralowlatency              E..V.... 
     lowlatency                   E..V.... 
     webcam                       E..V.... 
  -profile           <int>        E..V.... Set the profile (default main) (from 1 to 1) (default main)
     main                         E..V.... 
  -profile_tier      <int>        E..V.... Set the profile tier (default main) (from 0 to 1) (default main)
     main                         E..V.... 
     high                         E..V.... 
  -level             <int>        E..V.... Set the encoding level (default auto) (from 0 to 186) (default auto)
     auto                         E..V.... 
     1.0                          E..V.... 
     2.0                          E..V.... 
     2.1                          E..V.... 
     3.0                          E..V.... 
     3.1                          E..V.... 
     4.0                          E..V.... 
     4.1                          E..V.... 
     5.0                          E..V.... 
     5.1                          E..V.... 
     5.2                          E..V.... 
     6.0                          E..V.... 
     6.1                          E..V.... 
     6.2                          E..V.... 
  -quality           <int>        E..V.... Set the encoding quality (from 0 to 10) (default speed)
     balanced                     E..V.... 
     speed                        E..V.... 
     quality                      E..V.... 
  -rc                <int>        E..V.... Set the rate control mode (from -1 to 3) (default -1)
     cqp                          E..V.... Constant Quantization Parameter
     cbr                          E..V.... Constant Bitrate
     vbr_peak                     E..V.... Peak Contrained Variable Bitrate
     vbr_latency                  E..V.... Latency Constrained Variable Bitrate
  -header_insertion_mode <int>        E..V.... Set header insertion mode (from 0 to 2) (default none)
     none                         E..V.... 
     gop                          E..V.... 
     idr                          E..V.... 
  -gops_per_idr      <int>        E..V.... GOPs per IDR 0-no IDR will be inserted (from 0 to INT_MAX) (default 60)
  -preanalysis       <boolean>    E..V.... Enable preanalysis (default false)
  -vbaq              <boolean>    E..V.... Enable VBAQ (default false)
  -enforce_hrd       <boolean>    E..V.... Enforce HRD (default false)
  -filler_data       <boolean>    E..V.... Filler Data Enable (default false)
  -max_au_size       <int>        E..V.... Maximum Access Unit Size for rate control (in bits) (from 0 to INT_MAX) (default 0)
  -min_qp_i          <int>        E..V.... min quantization parameter for I-frame (from -1 to 51) (default -1)
  -max_qp_i          <int>        E..V.... max quantization parameter for I-frame (from -1 to 51) (default -1)
  -min_qp_p          <int>        E..V.... min quantization parameter for P-frame (from -1 to 51) (default -1)
  -max_qp_p          <int>        E..V.... max quantization parameter for P-frame (from -1 to 51) (default -1)
  -qp_p              <int>        E..V.... quantization parameter for P-frame (from -1 to 51) (default -1)
  -qp_i              <int>        E..V.... quantization parameter for I-frame (from -1 to 51) (default -1)
  -skip_frame        <boolean>    E..V.... Rate Control Based Frame Skip (default false)
  -me_half_pel       <boolean>    E..V.... Enable ME Half Pixel (default true)
  -me_quarter_pel    <boolean>    E..V.... Enable ME Quarter Pixel  (default true)
  -aud               <boolean>    E..V.... Inserts AU Delimiter NAL unit (default false)
  -log_to_dbg        <boolean>    E..V.... Enable AMF logging to debug output (default false)

例如, ffmpeg -i input.mkv -c:v hevc_amf -rc cqp -qp_p 0 -qp_i 0 -c:a copy output.mkv将是无损的。 请注意,虽然它的速度要快得多,但文件大小会比libx264或libx265大得多,因为它们的质量相同 - 这就是硬件编码器目前的情况。 您可能希望使用硬件编码器记录无损速度,然后使用libx264或libx265等软件编码器来减小文件大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM