我看到这里询问与编码和 ShareX 相关的问题,所以我决定在这个门户网站上提问。
基本上我使用 ShareX 16.1 录制视频。ffmpeg 版本:
ffmpeg version n7.0-14-g2d3ee7c069-20240423 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 13.2.0 (crosstool-NG 1.26.0.65_ecc5e41)
configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --disable-w32threads --enable-pthreads --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-fontconfig --enable-libharfbuzz --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --enable-libdvdread --enable-libdvdnav --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libaribcaption --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm --enable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --disable-doc --disable-ffplay --disable-ffprobe --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-libs=-lgomp --extra-ldflags=-pthread --extra-ldexeflags= --cc=x86_64-w64-mingw32-gcc --cxx=x86_64-w64-mingw32-g++ --ar=x86_64-w64-mingw32-gcc-ar --ranlib=x86_64-w64-mingw32-gcc-ranlib --nm=x86_64-w64-mingw32-gcc-nm --extra-version=20240423
libavutil 59. 8.100 / 59. 8.100
libavcodec 61. 3.100 / 61. 3.100
libavformat 61. 1.100 / 61. 1.100
libavdevice 61. 1.100 / 61. 1.100
libavfilter 10. 1.100 / 10. 1.100
libswscale 8. 1.100 / 8. 1.100
libswresample 5. 1.100 / 5. 1.100
libpostproc 58. 1.100 / 58. 1.100
Universal media converter
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
ShareX 内部的设置包括:
在最后一个屏幕上您可以看到,我复制了用于使用麦克风录音的附加命令行参数。
我录制了 2 小时的视频并很高兴在第二天观看这些内容,但是当我打开VLC或Media Player Classic(最新版本)并想要跳转到 1 小时 5 分钟的视频时,大约需要 10 分钟才能到达那里......
不确定这个问题是否与NVENC有关(我有 3770k 和 GTX1070ti,所以我决定使用 GPU,这个 CPU 被各种程序和东西压垮了)或者它只是 ShareX 的行为。
ShareX 录音无法快速搜索,这似乎很奇怪。基本上,如果我转到 01:05:00,大约需要 10 分钟。然后我想转到 01:30:00,这又将花费大量时间。
就好像这个视频是使用“单块”而不是“块”录制的,所以跳跃需要大量的时间。
我需要添加什么才能使搜索工作快速进行?我猜也许我应该在附加命令行参数中添加一些内容,就像普通的 YouTube 电影或任何服务(例如 Netflix)的任何电影一样?或者,不太可能,也许我不能这样做?
我还愿意接受有关编码和各种参数的其他建议,但主要原因是这个跳跃问题。
解决搜索问题的一种可能方法是确保视频中有足够的关键帧,因为视频播放器经常使用这些关键帧跳转到用户选择的特定时间。它们首先找到最接近的关键帧,然后解码更优化的帧,直到达到该时间。
为了确保编码器包含足够多的关键帧,您可以
-g 60
向 ShareX ffmpeg 添加附加参数选项。此参数指定两个关键帧之间的帧数。FPS60
意味着30
我们每秒添加一个关键帧2
,因此最多2
需要解码不到几秒的时间。当然,GOP 越小意味着文件大小越大,因为关键帧越多=视频中的完整帧越多。