GTX 1660 ti /NVENC 很快,但檔案大小簡直太可怕了!

我的主機是 Ryzen 7-1700,配備 16GB RAM,一堆硬碟加上一顆 SSD 做為系統碟,作業系統是 Windows 10 Professional。顯示卡原本是 GT 730 2GB。我使用的是 MCEB 的捐贈版 2.4 v11,並已啟用硬體編碼。

今年早些時候,我開始透過 Roku 與擷取盒錄製一些舊的半小時電視節目。我使用 OBS Studio 23.2(最新版),設定幾乎是預設值(1920 x 1080)。因為節目是較舊的格式,我把畫面稍微拉伸,最終畫面在 HDTV 上看起來很棒!擷取盒錄完檔案後,會送到我的 HTPC,由 MCEB 接手處理,使用 HEVC MP4 編碼器。我為這些節目特別建立了一組設定,因為它們沒有廣告,不需要 Comskip。

在 GT 730 的設定下,原始檔案約 470 MB,MCEB 可壓到約 220 MB。我需要檔案盡可能小,因為一季約有 40 集,我打算全部封存。

讀了很多資料後,我決定買張更好的顯示卡。我趁特價入手 GTX 1660 ti 並安裝,更新驅動後在 OBS 裡使用 H265 NVENC 編碼器。後來我也試了 H264 編碼器(應該跟 730 用的是同一個?),結果類似。

MCEB 的處理時間確實大幅縮短,從 40 分鐘降到 9 分鐘,CPU 負載也降低,以前同時處理兩串流會衝到 100%。但讓我失望的是,最終檔案大小幾乎跟原始擷取檔一樣大(超過 400 MB)。

我嘗試了各種設定,例如位元率,但無法達到同樣的壓縮率。最後我把 1660 退掉,裝回 730。第一個檔案轉檔後,處理時間與檔案大小都回到正常。既然這是專用機器,我可以離峰時段跑轉檔,但我原本期待更好的結果,尤其 Nvidia 與 OBS 在最新版 OBS 上還有合作。如果我哪裡做錯了,我也看不出來。

好奇是否有人也遇過類似情況,使用 Nvidia 顯卡?或者更入門的 1050 會不會反而比較好?

我发现NVENC的文件大小不够理想。我建议你提高压缩率,把文件大小降回去。回到1050不会让文件变小——只会拖慢转换速度。

謝謝。我該怎麼提高壓縮率?我試著把位元率從 2500 降到 2000 和 1500,前者對檔案大小幾乎沒影響,後者則讓畫質變得很差。

我建议你查看一下配置文件。找到这一行:

ffmpeg-video=-ss 9 -c:v hevc_nvenc -cq 26 -rc vbr -map 0:v

其中的 CQ 指的是“恒定质量”——数值越高,质量越低;当然,H265 的刻度与 H264 不同,H265 的 CQ 23 大约相当于 H264 的质量值 20。

使用上述设置,相比未压缩的 .TS 文件,文件大小可减少约 60%。该刻度是对数级的,因此微调一点就会产生很大影响。

祝你好运!Will。

感謝你的時間與建議。我找到了設定檔,這一行內容如下:
ffmpeg-video=-ss 0 -vf yadif=0:-1:1,hqdn3d -vcodec libx265 -preset medium -crf 26 -map 0:v -sn

我猜這行會不同是因為 GTX/NVENC 已經不在了。

你有沒有推薦的 H265 顯示卡來跑這個作業?我不想再花超過 200 美元,如果便宜一點的卡片就能有還不錯的效果,同時減輕 CPU 負擔的話。我知道 1050 是熱門選擇,所以我才會提到它。

一旦我有了支援 HEVC 的顯示卡,如果能在 OBS 裡找到類似的 ffmpeg 設定,或許也能減輕 MCEB 的負擔。

嗨。你摘录的配置使用的是 x265,完全是软件编码。如果把 libx265 改成 hevc_nvenc,就会开始用显卡进行编码。ffmpeg 的语法有点晦涩,我把我在用的配置贴在下面:

[MKV HEVC Beta Profile Constant Quality]
Description=WARNING: Handbrake Constant Quality encoding (26) with Nvidia HEVC.
order=ffmpeg, handbrake
AllowH264CopyRemuxing=true
FixedResolution=true
AutoDeinterlace=true
ffmpeg-UsingHardwareEncoding=True
ffmpeg-general=-threads 0 -hwaccel auto
ffmpeg-video=-ss 9 -c:v hevc_nvenc -cq 26 -rc vbr -map 0:v
ffmpeg-audio=-acodec ac3 -ab 192k -map 0:a
ffmpeg-audioac3=-acodec ac3 -ab 384k -map 0:a
ffmpeg-ext=.mkv
ffmpeg-audiodelay=skip
handbrake-UsingHardwareEncoding=true
handbrake-general=--decomb --denoise="weak" --loose-anamorphic --verbose=2 -T -O
handbrake-video=--start-at duration:0 --encoder nvenc_h265 --encoder-preset slow --quality 23 --vfr
handbrake-audio=-E ffac3 -R auto -B 192 -D 0 -a 1,2,3,4,5
handbrake-audioac3=-E ffac3 -R auto -B 384 -D 0 -a 1,2,3,4,5
handbrake-ext=.mkv
handbrake-audiodelay=skip
PreConversionCommercialRemover=true

你的显卡完全够用——它是 GTX 10xx 系列的升级版;我给 Plex / MCEBuddy 主机买了 RTX 2060,但买的时候你这款 16xx 还没上市。祝好运!Will。

另一件事:如果你使用的是較新版本的 Windows 10,可以在檔案轉換時開啟工作管理員,看看工作是由哪裡執行的。如果一切正常,當轉換實際進行時,你應該會看到顯示卡使用率飆升到 99%。這蠻酷的。謝謝!Will。

感谢你的帖子。我已经把 GTX 1660 Ti 退货了,现在用回 GT 730,而 NVIDIA 的规格表上写着这张卡不支持 H265。

编辑
我同时用 HW monitor 和 GPU monitor 这两个程序,在 MCEB 运行时查看 CPU 和 GPU 的状态。

我会再去找一张便宜的 10 系显卡。再次感谢。

我对我的2060很满意——2050也可以用,而且更便宜……

根据你的信息,我在 OBS Studio 里做了些尝试,因为我的目标是:在首次录制时就拿到一个“能过日子”的文件体积,之后只用 MCEB 处理节目数据并把它搬进 Plex。我对 ffmpeg 的工作原理其实不太熟,但知道怎么把代码粘进去。按照下面的流程,我曾在 OBS 里加过几个 dll 文件(照着某篇帖子,为了能用 libx265),结果录制器两次都崩了。我查过资料,OBS 并不支持 x265。

我把 MCEB 配置文件里的 ffmpeg 参数整段搬过来,去掉最后一行关于广告处理的部分,改用 H264_Nvenc 编码器,5 分钟测试片的体积立刻大幅缩水:之前用 H265 Nvenc 抓的约 190 MB,今天这条只有 103 MB(这个压缩比跟我在 MCEB 里得到的差不多)。更妙的是,OBS 状态条显示录制时 CPU 占用只有 14% 左右,我在另一台机器上播放,画质也 OK。

我手头还有一些半小时档(实际 24 分 30 秒左右)的素材,准备拿它们再试一次,看看效果是否一致。如果行得通,我就可以先不急着换显卡了。

再次感谢你的帮助。

好吧,回到起点。我用自定义设置生成的24分钟文件大约是503 MB。我意识到之前评论时看的是我制作的最大的H265文件,而使用H264编码的其他文件更小。同一节目用之前的设置大约是487MB,所以这样反而变大了。

我会继续尝试不同的设置。如果MCEB能在同一台机器上用ffmpeg做到这一点,那一定有办法让OBS也实现。