感謝 @Will_Tschumy(連結見下方),他寫了一篇關於設定 H265 固定品質設定檔的優秀文章。
我剛剛用相同的 TS 來源檔案,逐一進行了幾次並排測試。
整體而言,H265 轉檔速度是相同 MP4 工作的三倍,而且 H265 檔案大小幾乎比對應的 MP4 小 50%。
這讓我意識到自己多麼無知——我本來會假設結果完全相反。但現在,我正在思考是否有任何理由不全面採用 H265。目前播放正常、字幕正常……目前為止,沒有任何警訊……
此刻,這似乎是個幸運發現的討論主題。
BrianGGG
感謝 @Will_Tschumy(連結見下方),他寫了一篇關於設定 H265 固定品質設定檔的優秀文章。
我剛剛用相同的 TS 來源檔案,逐一進行了幾次並排測試。
整體而言,H265 轉檔速度是相同 MP4 工作的三倍,而且 H265 檔案大小幾乎比對應的 MP4 小 50%。
這讓我意識到自己多麼無知——我本來會假設結果完全相反。但現在,我正在思考是否有任何理由不全面採用 H265。目前播放正常、字幕正常……目前為止,沒有任何警訊……
此刻,這似乎是個幸運發現的討論主題。
BrianGGG
这很有趣,两者都使用硬件加速吗?
以我的外行人眼光來看,是的。兩者都使用硬體編碼。
我附上兩個設定檔在進行相同轉檔時的紀錄檔,方便您快速查看。
log.zip (2.2 MB)
順帶一提,DEBUG 紀錄檔裡出現這麼多下列行,對空間與可用性都是一大殺手。這值得提出功能請求嗎?
2018-02-14T04:52:34 MCEBuddy.AppWrapper.MencoderCropDetect
是的,它们在转换参数方面很接近,唯一显著的区别是 mp4 版本多了一个滤镜(hqdn3d)以及配置文件中还有一些用于去噪的 x264 选项,最终码率约为 4Mbps,而 hevc 为 2.4Mbps。
为了完美比较 mpeg4 与 hevc,请在您的 H265 配置文件中将 hevc_nvenc 改为 h264_nvenc,其余保持不变。现在进行测试,就能得到 hevc 与 mpeg4 在使用 nvidia cuda 编码器时的速度对比。
採用你上面建議的修改後,264 與 265 的耗時幾乎相同。
如果方便的話,能否簡單說明是什麼因素阻礙了 MP4 profile(例如為何那些額外選項可能必要、也可能不必要)?
当然,它是一组用于编码的选项。MP4 配置文件使用了一堆过滤器和其他增强编码选项(我在下面用加粗标出)
ffmpeg-video=-ss 3 -vf yadif=0:-1:1,hqdn3d -vcodec libx264 -b 1400k -x264opts me=hex:trellis=1:subq=8:partitions=all:8x8dct=1:ref=3:rc-lookahead=50:keyint=25:min-keyint=20:bframes=1: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=0:threads=auto -map 0:v -sn
这些参数旨在以合理的文件大小(由码率 1.4 Mbps 决定)提供尽可能好的画质,因此编码速度较慢,但相比简单的固定量化器,你会得到更好的画面。你可以谷歌这些选项,或查看 ffmpeg 页面获取详细信息(其他编码器如 handbrake 和 mencoder 同理)。
编码永远是在速度、体积和质量之间权衡,而控制这些权衡的方法数不胜数:码率、过滤器、编码参数……文件越大(码率越高),质量越好;编码越快,质量通常越低——你懂的。
试试这个:先用硬件编码跑一遍“MP4 普通”配置文件,再用硬件编码跑一遍“MP4 快速”配置文件,看看差别。快速版应该更快,因为它启用的质量优化过滤器和设置更少。
话说回来,如果你的编码器在其余条件相同的情况下,H.265 和 H.264 耗时一样,那就太棒了,因为 H.265 通常能在给定码率/体积下提供更高的画质,所以它依然是绝对赢家。
另一件可能与此相关的事情。
我今天注意到:
H265 里是不是有什么线程机制在 MP4 里没有?
我自己没查出来,所以把两个配置贴在下面。请问这两个配置里有没有可能导致这种差异的地方?
谢谢
BrianGGG
[MKV HVEC Constant Quality]
Description=WARNING: Constant Quality encoding (25) with Nvidia HVEC.
order=ffmpeg, handbrake
AllowH264CopyRemuxing=true
FixedResolution=true
AutoDeinterlace=true
ffmpeg-UsingHardwareEncoding=True
ffmpeg-general=-threads 0 -hwaccel auto
ffmpeg-video=-ss 3 -c:v hevc_nvenc -cq 23 -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:3 -e x265 -q 18
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
[MP4 Normal]
Description=Main profile, good quality 1 pass MP4 (H.264/AAC) conversion. Good for most conversions, produces good results and is faster than the two pass conversion.
order=ffmpeg,mencoder,handbrake
mencoder-general=-ss 3 -vf pullup,softskip,yadif=0:-1,hqdn3d,harddup
mencoder-video=-ovc x264 -x264encopts bitrate=1400:me=hex:trellis=1:subq=8:partitions=all:8x8dct:ref=3:rc_lookahead=50:keyint=25:keyint_min=20:bframes=1:weight_b:level_idc=40:b_pyramid=normal:direct_pred=auto:mixed_refs:deblock=-1,-1:nofast_pskip:nodct_decimate:b_adapt=0:threads=auto
mencoder-audio=-oac faac -faacopts br=160:mpeg=4:tns:object=2
mencoder-audioac3=-oac faac -faacopts br=256:mpeg=4:tns:object=2
mencoder-ext=.avi
mencoder-remuxto=.mp4
mencoder-audiodelay=skip
ffmpeg-general=-threads 0
ffmpeg-video=-ss 3 -vf yadif=0:-1:1,hqdn3d -vcodec libx264 -b 1400k -x264opts me=hex:trellis=1:subq=8:partitions=all:8x8dct=1:ref=3:rc-lookahead=50:keyint=25:min-keyint=20:bframes=1: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=0:threads=auto -map 0:v -sn
ffmpeg-audio=-acodec libfdk_aac -ab 160k -cutoff 18000 -map 0:a
ffmpeg-audioac3=-acodec libfdk_aac -ab 256k -cutoff 18000 -map 0:a
ffmpeg-ext=.mp4
ffmpeg-audiodelay=skip
handbrake-general=--decomb --loose-anamorphic --verbose=2 -f mp4 -O
handbrake-video=--start-at duration:3 -e x264 -b 1400 -x me=hex:trellis=1:subq=8:partitions=all:8x8dct:ref=3:rc-lookahead=50:keyint=25:keyint-min=20:bframes=1:weight-b:level-idc=40:b-pyramid=normal:direct-pred=auto:mixed-refs:deblock=-1,-1:nofast-pskip:nodct-decimate:b-adapt=0:threads=auto
handbrake-audio=-E faac -R auto -B 160 -D 0 -a 1,2,3,4,5
handbrake-audioac3=-E faac -R auto -B 256 -D 0 -a 1,2,3,4,5
handbrake-ext=.mp4
handbrake-audiodelay=skip
PreConversionCommercialRemover=true
可能存在多种原因,例如 MP4 配置文件中用于降噪及其他高级参数的部分过滤器可能不受 GPU 支持,因此会回退到 CPU 运行。编码模式(固定码率 vs 固定量化值)在不同 GPU 上的能力各异,有些效率更高。
或许你可以帮我们做个测试:在你的 MKV 配置文件中改用不同模式(例如把 -cq 23 换成 -b:v 1400),然后告诉我们 GPU 的表现如何。
如果你把 MKV 配置文件里的 hevc_nvenc 改成 h264_nvenc,GPU 的表现会怎样?这能很好地对比该卡 H.264 与 HEVC 的编码能力。
第一次測試完成。H264 的行為與 H265 類似,使用此設定檔讓 GPU 使用率超過 20% 沒有問題。
我稍後會依照上述方式調整 H265,進行下一次測試。
我搜尋了很久,似乎找不到一個確切的答案,所以我想在這裡發問,因為我們正在討論 h265 硬體編碼。
我應該買哪一張 GPU 來做這件事?
我在很多地方讀到,透過 NVIDIA 的硬體編碼會導致影片品質不佳,現在還是這樣嗎?我讀到的很多文章都已經有點舊了。
另外,因為我在跑 Plex 伺服器,我也希望選的 GPU 能夠支援硬體轉碼…
先謝謝大家的幫忙。
![]()
胡说——我同时用过AMD和NVidia显卡。我看到的唯一区别是速度:在相同画质(无论是设置还是观感)下,NVidia更快。1060在性价比和功耗方面都很出色。无论选哪个都不会错,但我用NVidia更顺手。祝好运!
via Newton Mail
非常感谢,Will。这应该能帮我省去很多麻烦。