我正在嘗試設定一個轉檔設定檔,先試了 MKV HEVC,再試了使用 NVENC 的 MKV 高畫質。兩者都沒問題,只是似乎有某種檔案大小或位元率上限。不論我怎麼調,兩種設定的位元率都剛好卡在 2000,檔案大小約 500 MB。
HEVC 測試時,我把 cq 從 28 調到 20,完全沒變化。
換到 H264 時,看到 -b 1800k,我以為那是位元率設定,但檔案大小/位元率幾乎一樣。
有某個設定在覆蓋我的參數,我完全不知道是什麼,有人能幫忙嗎?我用 ffmpeg 搭配 NVENC。
這是 log:INFORMATION> --> Starting conversion - DEBUG MESSAGESINFORMATION> --> Windows - Pastebin.com
這是我的 HEVC 設定檔
ffmpeg-general=-threads 0
ffmpeg-video=-ss 0 -vf yadif=0:-1:1,hqdn3d -vcodec h264_nvenc -b 3500k -x264opts me=hex:trellis=2:subq=8:partitions=all:8x8dct=1:ref=5:rc-lookahead=50:keyint=25:min-keyint=20:bframes=3:weightb=1:level=4.0:b-pyramid=normal:direct=auto:mixed-refs=1:deblock=-1,-1:no-fast-pskip=1:no-dct-decimate=1:b-adapt=2:threads=auto -map 0:v -sn
ffmpeg-audio=-acodec ac3 -ab 192k -map 0:a
ffmpeg-audioac3=-acodec copy -map 0:a
ffmpeg-ext=.mkv
ffmpeg-audiodelay=skip
我以为通过质量滑块已经解决了问题,但我的编码仍然无法超过2000kbps,有人能告诉我遗漏了什么吗?这肯定不是软件的限制吧。
Goose
(Goose)
3
看起来你在转换任务中配置的档案和你正在编辑的不是同一个,这就解释了为什么没有任何变化 
请确保每个档案都有一个唯一的名称。 如果你要自定义档案,最好新建一个具有唯一名称的档案。
这是转换任务已配置使用的档案(它使用的是 crf 而非比特率)
INFORMATION> 2019-08-29T15:01:45 MCEBuddy.Engine.ConversionJob → Converting
→ Profile being used : HEVC MKV
Profile entries →
→ Description=HEVC in MKV (H.265/AC3) conversion. Creates a smaller file (50% smaller than H.264) with comparable quality but very slow.
→ order=ffmpeg,handbrake
→ ffmpeg-general=-threads 0
→ ffmpeg-video=-ss 0 -vf yadif=0:-1:1,hqdn3d -vcodec nvenc_hevc -preset slow -crf 20 -map 0:v -sn
→ ffmpeg-audio=-acodec ac3 -ab 160k -map 0:a
→ ffmpeg-audioac3=-acodec copy -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 slow -q 20
→ handbrake-audio=-E ffac3 -R auto -B 160 -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
抱歉我测试太多,结果粘贴错了配置文件。这是使用相同问题配置的最新日志。
你引用的那个配置也一样。我的问题就是:它显示 q 20,但改这个值毫无作用,始终是 2000kbps。我附上 HEVC 配置和日志。同样的问题,改画质无效,目前设为 25。
[HEVC MKV]
Description=HEVC in MKV (H.265/AC3) conversion. Creates a smaller file (50% smaller than H.264) with comparable quality but very slow.
order=ffmpeg,handbrake
ffmpeg-general=-threads 0
ffmpeg-video=-ss 0 -vf yadif=0:-1:1,hqdn3d -vcodec nvenc_hevc -preset slow -crf 25 -map 0:v -sn
ffmpeg-audio=-acodec ac3 -ab 160k -map 0:a
ffmpeg-audioac3=-acodec copy -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 slow -q 20
handbrake-audio=-E ffac3 -R auto -B 160 -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
日志:
希望這樣能讓事情更清楚。我沒有看到任何會限制位元速率的東西,但我還是無法讓位元速率/檔案大小有所變動。
(抱歉發了這麼多則)
我在日誌裡看到這段,但不知道是從哪來的,也不曉得它是怎麼被插進去的。
Stream #0:1: Video: hevc (nvenc_hevc) (Main), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=-1–1, 2000 kb/s, 29.97 fps, 1k tbn, 29.97 tbc
zhulick
(Zhulick)
7
不知道这是否是导致你问题的原因,但从你的日志来看:
[nvenc_hevc @ 000001f6b8970e60] 该编码器已弃用,请使用 ‘hevc_nvenc’ 代替
好的,我可以改。我想是滑桿設定的問題。我只是搞不懂這個滑桿(畫質滑桿)在固定位元率或 cq 模式下到底該怎麼用。我把畫質調到 -40%,目前看起來效果還行,就這樣吧。
目前只在桌機上測試過,還得在電視上比對看看效果如何。
Goose
(Goose)
9
這是因為 MCEBuddy 不認識 -cq。它是 ffmpeg 中已廢棄的選項,而且它所謂的「固定品質」其實並非大多數人以為的 constant quality,而是 constant quantizer,兩者意義完全不同。
你應該改用 -b 來指定位元率,或用 -crf 來指定品質。MCEBuddy 能辨識這兩個參數,並在你拖動滑桿時自動調整數值。
若不希望 MCEBuddy 更動任何影片設定檔參數(包括忽略品質滑桿),請在設定檔中加入必要的 VideoOptimized 指令。詳情請參考此連結:MCEBuddy - Advanced Settings, Commands and Tweaking
建立自訂設定檔時,可參考上述連結,也歡迎查看現有設定檔作為範例。
太好了,现在我们有点进展了,感谢你的回复,我会继续测试。关于上面的帖子,我应该把 nvenc_hevc 改成 hevc_nvenc 吗?假设它们是不同的。
Goose
(Goose)
11
它們是一樣的,但請使用 @zhulick 所建議的選項,因為如果您使用任何內建選項來管理硬體加速,MCEBuddy 會採用較新的慣例。
说实话,我只是拿了 HEVC 的配置文件,然后把原来的内容替换了。大概是 libvx265 之类的。想让她启用硬件加速,因为单纯勾选那个框没起作用。
跟 HandBrake 的设置相比,有一点似乎受限:去梳齿(decomb)和去交错(deinterlacing)的选项。至少在 HB 里能看到,而 ffmpeg 里却没有。
我能假设只要在配置文件里写上,所有 ffmpeg 支持的参数就都能生效吗?
zhulick
(Zhulick)
13
你不需要使用 ffmpeg,如果你比較習慣用 HandBrake。我個人偏好 HandBrake,所以我用它。
只要將編碼器改為 --encoder nvenc_h265(不含引號)就能在 HandBrake CLI 中啟用 NVENC。
哦,真的吗?在我找到的所有关于 mcebuddy 的文档(在这个网站上)里,我发誓它都说 Handbrake 只支持 quicksync,而 Nvidia 则需要 ffmpeg。这太棒了,因为我更习惯用 handbrake,而且已经有我喜欢的设置。只是想用硬件加速来释放 CPU。非常感谢。
zhulick
(Zhulick)
15
你絕對可以使用 HandBrake。你可能需要把 HandBrake CLI 的執行檔更新到最新版本(只要替換 HandBrake 資料夾裡的 exe 即可),不確定。我第一次嘗試的時候記得得這麼做。不確定 MCEBuddy 附帶的 CLI 版本後來是否已更新,也許已經更新了。
很抱歉我得被手把手教,但我无论如何都无法触发 nvenc。我已经尝试了 100 种组合。最初写的是 -e x265
这会调用软件编码,但把 x265 换成 nvenc_h265 却无效。按你说的方式也不行,下面是我的配置。另外,如何设置让它不处理音频,直接透传?
[HEVC Handbrake MKV]
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-general=-threads 0
ffmpeg-video=-ss 0 -vf yadif=0:-1:1,hqdn3d -vcodec -e nvenc_hevc -preset slow -level 5.1 -b:v 3500k -map 0:v -sn
ffmpeg-audio=-acodec ac3 -ab 160k -map 0:a
ffmpeg-audioac3=-acodec copy -map 0:a
ffmpeg-ext=.mkv
ffmpeg-audiodelay=skip
handbrake-general=–decomb --loose-anamorphic --verbose=2
handbrake-video=–start-at duration:0 -encoder nvenc_h265 -preset slow -q 26
handbrake-audio=-E ffac3 -R auto -B 384 -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
handbrake-VideoOptimized=true
handbrake-UsingHardwareEncoding=true
PreConversionCommercialRemover=true
zhulick
(Zhulick)
17
如果你不使用 ffmpeg,可以從你的設定檔中刪除所有與它有關的項目。
我的設定如下:
[NVENC HEVC MP4 q22med/640]
Description=HEVC in MP4 (H.265/AAC) 轉檔。產生比 H.264 小 50% 的檔案,品質相當但速度非常慢。
order=handbrake
handbrake-general=–loose-anamorphic --verbose=2 -f mp4 --subtitle “1,2,3,4,5”
handbrake-video=–start-at duration:0 --encoder nvenc_h265 --encoder-preset medium -q 22
handbrake-audio=-E eac3 -R auto -B 640 -D 0 -a 1,2,3,4,5
handbrake-ext=.mp4
handbrake-audiodelay=skip
PreConversionCommercialRemover=true
我音訊使用 eac3/640,你可以改回 aac/160 或其他你打算使用的格式。
若輸出為 mkv,把副檔名改為 mkv 並從 general 刪除 -f mp4。
需要去交錯或降噪時,可在 video 加入 -decomb -denoise。
如果設定檔保留 handbrake-VideoOptimized=true,mcebuddy 會把來源視為完美並跳過任何影像處理──因此無法降噪等。
轉藍光光碟時很方便,但不確定是否適合 DVR 錄製的電視節目。
谢谢,我会试试看。我喜欢 640 音频,但我大多数电视内容最多只有 384,所以不希望它上混。我想弄清楚如何只做直通。
编辑:终于搞定了!谢谢你,我语法太差了,真的很糟糕。非常感谢你的帮助。
看起來滑桿還是主宰一切,不確定在滑桿會覆蓋的情況下,設定 CRF 或 -q 有什麼意義。即使開啟了最佳化影片選項,實際結果似乎還是由滑桿決定。
zhulick
(Zhulick)
20
我觉得它本来就该这样。滑块会覆盖配置文件,让用户能在图形界面里调整画质和大小。MCEBuddy 无法判断你用的是它内置的预设账号还是自己的,因此会覆盖收到的所有设置。
我从没用过滑块,所以不知道它有多准。不过,如果我要用,我会先把配置文件里的 -q 设为 20。这样 +10% 就相当于 -q22,+15% 就是 -q23,以此类推,至少能大致知道自己在哪个 -q 值。再次强调,我不知道滑块上的百分比到底对应多少 -q 增幅,但理论上应该可行。