FFmpeg 无法以高 fps 录制屏幕

FFmpeg 无法以高 fps 录制屏幕

我一直在尝试使用 ffmpeg 录制在桌面上以 60 fps 的速度在 chrome 上播放的视频(1920 * 1080)。我对 ffmpeg 不是很熟悉,所以如果我在帖子中写错了什么,请纠正我。以下是我的系统规格:-

Windows 10

锐龙 3600

16 GB 内存

Nvidia GTX 1650

240GB 固态硬盘

我正在运行的命令是-

ffmpeg -thread_queue_size 5096 -f gdigrab -framerate 60 -probesize 42M -s 1920x1080 -rtbufsize 2000M -i desktop -c:v h264_nvenc -preset llhp output.mkv

但最终输出出现卡顿,录制速度约为 21-23 fps(可从 ffmpeg 输出中看到)。我检查了我的任务管理器,似乎没有任何东西达到最大值。

我将 ffmpeg 日志输出粘贴在下面

ffmpeg version git-2020-06-28-4cfcfb3 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 9.3.1 (GCC) 20200621
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libgsm --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
  libavutil      56. 55.100 / 56. 55.100
  libavcodec     58. 93.100 / 58. 93.100
  libavformat    58. 47.100 / 58. 47.100
  libavdevice    58. 11.100 / 58. 11.100
  libavfilter     7. 86.100 /  7. 86.100
  libswscale      5.  8.100 /  5.  8.100
  libswresample   3.  8.100 /  3.  8.100
  libpostproc    55.  8.100 / 55.  8.100
[gdigrab @ 000002289415e2c0] Capturing whole desktop as 1920x1080x32 at (0,0)
Input #0, gdigrab, from 'desktop':
  Duration: N/A, start: 1594273685.053229, bitrate: 3981337 kb/s
    Stream #0:0: Video: bmp, bgra, 1920x1080, 3981337 kb/s, 60 fps, 1000k tbr, 1000k tbn, 1000k tbc
Stream mapping:
  Stream #0:0 -> #0:0 (bmp (native) -> h264 (h264_nvenc))
Press [q] to stop, [?] for help
Output #0, matroska, to 'output.mkv':
  Metadata:
    encoder         : Lavf58.47.100
    Stream #0:0: Video: h264 (h264_nvenc) (Main) (H264 / 0x34363248), rgb0, 1920x1080, q=-1--1, 2000 kb/s, 60 fps, 1k tbn, 60 tbc
    Metadata:
      encoder         : Lavc58.93.100 h264_nvenc
    Side data:
      cpb: bitrate max/min/avg: 0/0/2000000 buffer size: 4000000 vbv_delay: N/A
frame=  600 fps= 23 q=25.0 Lsize=    1533kB time=00:00:26.21 bitrate= 478.9kbits/s speed=   1x
video:1528kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.311876%
Exiting normally, received signal 2. 

最后,你可以看到 fps=23 的标记。我不知道为什么我无法以指定的 fps 录制它。因此,我录制的视频显得很不连贯。

但是如果我使用 OBS 进行相同的录制,它似乎工作正常。不太清楚那里发生了什么不同。但我只需要通过 ffmpeg 命令行来执行此操作。请指导。谢谢!

[编辑] 我实际上想做的是录制一个正在播放 webm(vp9 编码)视频的网站。但我无法让它流畅播放。

如果我录制的是同一个网站,但不是 webm 视频,而是 mp4 视频,则不会出现卡顿。这才是真正令人困惑的地方。由于 webm 文件,卡顿似乎正在出现

相关内容