我的新顯示卡可以同時執行 4 個編碼工作。我稍早使用 FFmpeg Batch AV Converter 驗證過這一點。我現在在 MCEBuddy 中執行相同的操作,但我的 CPU 使用率達到 100%,使用 ffmpeg 作為編碼器,MCEBuddy GUI 變得無回應,而且我的電腦變得很慢。我想繼續使用 MCEBuddy,但我不能讓我的電腦因此癱瘓。我必須關閉 GUI 才能操作電腦。然後我重新開啟 GUI,它顯示了所有四個轉換的進度約 5 秒鐘,之後又再次鎖定並變得無回應。這樣程式根本無法使用。我做錯了什麼嗎?我該如何修正?
MKV HEVC 的 profile 与硬件编码不兼容,那么 MCEBuddy 是如何把参数传给 ffmpeg 的?还是直接采用 ffmpeg 的默认设置?有没有办法修改硬件编码的参数?
我把同時轉檔數調回 2 個,這樣在其他程式一起跑時就能壓在 90% 以下,至少電腦還能用。我很喜歡 MCEBuddy,但我想知道要怎麼把 4 個同時轉檔的 CPU 使用率壓下來,同時又能享受速度提升。我在另一個程式裡用自訂設定檔,大概一小時能跑完 4 個,CPU 使用率約 65%,完全不卡。
如果在轉換工作中勾選了「硬體加速」,它會在偵測到可用硬體時使用硬體。
如果您能提供一段佔用大量 CPU 的轉換記錄,我們或許能找出原因並給出建議。
該設定檔預設會先嘗試使用 Handbrake,但依您的 GPU 情況,可能會因「medium」預設值不存在而失敗。
此外,音訊會被重新編碼,這部分 CPU 負擔較高,因為 GPU 不會處理音訊,不過這應該只佔極少資源;我個人選擇直接複製音訊。
以下是 MKV HEVC 設定檔:
Description=HEVC in MKV (H.265/AC3) conversion. Creates a smaller file (50% smaller than H.264) with comparable quality but very slow.
order=handbrake,ffmpeg
ffmpeg-general=-threads 0
ffmpeg-video=-ss 0 -vf yadif=0:-1:1,hqdn3d -vcodec libx265 -preset medium -crf 26 -map 0:v -sn
ffmpeg-audio=-acodec ac3 -ab 160k -map 0:a
ffmpeg-audioac3=-acodec ac3 -ab 256k -map 0:a
ffmpeg-ext=.mkv
ffmpeg-audiodelay=skip
handbrake-general=--decomb --loose-anamorphic --verbose=2
handbrake-video=--start-at duration:0 -e x265 --encoder-preset medium -q 26
handbrake-audio=-E ffac3 -R auto -B 160 -D 0 -a 1,2,3,4,5
handbrake-audioac3=-E ffac3 -R auto -B 256 -D 0 -a 1,2,3,4,5
handbrake-ext=.mkv
handbrake-audiodelay=skip
PreConversionCommercialRemover=true
我希望能再強化設定檔,並將編碼器綁定到我所使用的特定 GPU。只要修改 order= 即可改用 ffmpeg。以下是幾個範例:
Intel:
[HEVC MKV Intel]
Description=HEVC in MKV hardset to use Intel.
order=handbrake,ffmpeg
DisableEncoderReordering=true
ffmpeg-general=-threads 0
ffmpeg-video=-ss 0 -vf yadif=0:-1:1,hqdn3d -vcodec hevc_qsv -preset slow -crf 26 -vsync 2 -map 0:v -sn
ffmpeg-audio=-acodec ac3 -map 0:a
ffmpeg-audioac3=-acodec copy -map 0:a
ffmpeg-ext=.mkv
ffmpeg-audiodelay=skip
ffmpeg-UsingHardwareEncoding=true
ffmpeg-DisableSoftwareEncoderFallback=true
handbrake-general=--decomb --auto-anamorphic --verbose=2
handbrake-video=--start-at duration:0 -e qsv_h265 --encoder-preset quality -q 26
handbrake-audio=--aencoder copy --audio-copy-mask aac,ac3,eac3,truehd,dts,dtshd,mp3,flac -R auto
handbrake-audioac3=--aencoder copy --audio-copy-mask aac,ac3,eac3,truehd,dts,dtshd,mp3,flac -R auto
handbrake-ext=.mkv
handbrake-audiodelay=skip
NVidia
[HEVC MKV AnyStream NVidia]
Description=HEVC in MKV hardset to use NVidia.
order=handbrake,ffmpeg
DisableEncoderReordering=true
ffmpeg-general=-threads 0
ffmpeg-video=-ss 0 -vf yadif=0:-1:1,hqdn3d -vcodec hevc_nvenc -preset hq -crf 26 -vsync 2 -map 0:v -sn
ffmpeg-audio=-acodec ac3 -map 0:a
ffmpeg-audioac3=-acodec copy -map 0:a
ffmpeg-ext=.mkv
ffmpeg-audiodelay=skip
ffmpeg-UsingHardwareEncoding=true
ffmpeg-DisableSoftwareEncoderFallback=true
handbrake-general=--decomb --auto-anamorphic --verbose=2
handbrake-video=--start-at duration:0 -e nvenc_h265 --encoder-preset hq -q 26
handbrake-audio=--aencoder copy --audio-copy-mask aac,ac3,eac3,truehd,dts,dtshd,mp3,flac -R auto
handbrake-audioac3=--aencoder copy --audio-copy-mask aac,ac3,eac3,truehd,dts,dtshd,mp3,flac -R auto
handbrake-ext=.mkv
handbrake-audiodelay=skip
handbrake-UsingHardwareEncoding=true
handbrake-DisableSoftwareEncoderFallback=true
AllowAllCopyRemuxing=true
除了使用硬件编码器和优化配置文件外,您还可以查看此主题,了解如何限制视频编码所使用的资源:
SystemIdleProcess…我是否必須把 [HEVC MKV AnyStream NVidia] 這個設定檔加到我的 profiles 檔案裡才能試用?如果是的話,我是否只要把它加在目前的 HEVC 軟體編碼設定檔下方即可?
昨晚我用 MCEBuddy 看電影時,發現了目前硬體加速設定檔的弱點。問題出現在低光源場景,畫面大部分是黑、白、灰階,因為環境很暗。這時會出現光暈或條帶效應,像是一圈一圈的同心圓,彷彿靶心,圓心可能在螢幕中央,也可能環繞著在暗處移動的人物。只要場景一出現真實色彩,這種效應就會消失,或變得幾乎看不出來。在光線充足的場景,畫面幾近完美。我反覆切換比對 H.265 編碼與同一部片的 H.264 版本,後者完全看不到這種現象。
我打算用這部片來實驗編碼參數,希望消除這種效應,同時盡量維持最小的檔案大小。你有什麼建議的參數可以調整嗎?我打算把這部片重複編碼 5 到 6 次,每次稍微提高一點品質,直到效應消失,然後把這組參數當作新設定檔,至少用在恐怖片上,因為正常亮度的片子目前效果已經很好。這是我第一次遇到這種異常。
編輯…好,我已經加了設定檔,在 MCEBuddy 裡選取它,現在只跑這部片當作基準。
謝謝
我完全明白你说的那些黑色/暗场场景的问题。目前我还没空去深入尝试解决,但你方向是对的:把质量调高(其实是把码率限定值调低,在配置文件里把26往下调),直到问题消失。除此之外,我也没有什么参数可调的招。可能这类电影/剧集只能改用软件压,甚至得用main10配置,才能转出真正的HDR10。或者干脆用H264。说实话,我也没定论。
谢谢你的帮助,如果我们都在试验,也许能找到答案。如果我解决了,我可能会专门为恐怖片建一个配置,因为它们有大量暗场景,尤其是带运动的。我昨晚看《The Amityville Murders》时才注意到这个问题,电影后半段几乎全黑。普通电影里极暗场景也会出这种效果,但只持续不到一秒,不值得为这点细节增大文件,多数人不会察觉……可我就是什么都看得见。
这部片子的 H.264 编码在暗场景下画质更好,但它是软件编码,我打算再跑一次硬件加速的 H.264,看问题是否还在。无论如何我会找到解决办法,也许最后就是接受它,只要文件别大到离谱。我连续几周每晚都看恐怖片,这是第一次明显察觉这个问题。
我在《光靈》裡注意到了,我自己也是這樣;我老婆沒感覺也沒在意,但我覺得看起來很糟。
有個省時的小技巧:你可以用 MCEBuddy Custom Cuts 應用程式把電影的其他部分剪掉,只留下你想測試的場景。或者用其他軟體把其餘部分裁掉,讓來源檔只剩你想測試的場景。
这是个好主意,我可以直接剪掉那段最显眼的5分钟片段,我还记得那个时间点,这样我就能在一小时内完成所有编码。
我用你的原始設定檔跑了一次影片,一次用 crf 23,一次用 crf 20,結果三個輸出檔案完全沒有差異。檔案大小都一樣,畫質也一樣,問題依然存在。
嗯……这很奇怪。你确定它用了ffmpeg吗?你能附上你转换的其中一个文件的日志文件吗?
[Uploading: The Amityville Murders STZEH.ts-Convert to MP4-2020-11-04T14-25-49.log…]
這是我上次將 crf 設為 20 時的日誌
由于某种原因我无法上传,它一直提示“请求时间与当前时间之间的差异过大”。
……但根据日志,它正在使用 ffmpeg……但为什么它还在使用 comskip?我从未运行过那个程序,我该如何关闭它?
它可能會呼叫 comskip 但不會執行任何操作。不用擔心。你在日誌結尾有看到「MCEBuddy.AppWrapper.Handbrake」嗎?
不,Handbrake 在结尾处并没有类似的功能;它只在开始时用于检查,随后就交给 MCEBuddy.Transcode.ConvertWithFfmpeg。
這裡是 nvenc_hevc 編碼器預設選項的其他選項。
-preset <int> E..V..... 設定編碼預設值(從 0 到 11)(預設值為 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..... lossless losslesshp 11 E..V..... lossless hp
Slow 會進行 2 次 hq 傳遞,可能會產生更好的結果。但說實話,我們可能搞錯方向了。也許只要在網路上搜尋一下 ffmpeg 和 nvenc_hevc 相關資料就好。
老實說,我最近主要使用的是 Intel 硬體編碼,因為那是我次要機器上的配備,而大部分擷取/編碼工作都是在那台機器上進行的。
我发现改变 crf 值对输出视频毫无影响的原因在于……crf 仅用于软件编码,而 nvenc 必须使用 cq 值。
另外,你贴出的那些配置文件还有另一个缺陷……它们在 nvenc 参数之前全部采用软件编码,例如去交错。其实可以在 nvenc 里使用 yadif,我在 ffmpeg Batch 中测试过,一旦让 GPU 负责去交错,编码时间只有 MCEBuddy 的一半……只是我还没搞清如何按照现有配置文件的结构,把所有参数成功传给 MCEBuddy 里的 nvenc,总是会报错。