作者YouCantGetME (高级攻城师)
看板AVEncode
标题Re: [请问] 硬体加速编码解决方案
时间Fri Oct 11 13:00:21 2024
: 推 JKGOOD: 感谢Y神 10/10 07:54
: 推 JKGOOD: 如果NVENC画质输x264 veryslow,那我可能会用CPU去编了 10/11 08:3
官方宣称赢x264 faster/medium
我"个人"觉得在1080p 5Mbps上下 NVENC是抹得好看 细节丢的合理
x264细节还是留太多 画面变化容易碎掉/马赛克
流量超过15Mbps 非商用我绝对选NVENC 时间电费差太多
用x264慢慢磨也没好到值得这差距
5Mbps以下就值得挣扎一下 尤其NVENC对於大场景变动会压不住流量
当encoder Q>51时会放弃流量限制 给5Mbps 爆量到20Mbps之类的
用电视白杂讯画面可以复现这种状况
某些应用不允许这种情况
至於x264 veryslow是真的veryslow耶 这种匠人活留给字幕组去磨就好
: → JKGOOD: 一般我的码率设定在1080P 6Mbps AVC,4K 20Mbps HEVC 10/11 08:34
: 推 JKGOOD: 软体的话是使用德国免费老牌Xmedia Recode,作者蛮勤劳更 10/11 08:37
: → JKGOOD: 新ffmpeg和codec的 10/11 08:37
试了一下 decode跟process都是用CPU处理
如果塞HEVC用CPU软解那结果可想而知
建议开工作管理员切GPU页看软体怎麽用CUDA解码/编码
环境
12700k+4090
须注意NVENC/NVDEC是独立区块 与GPU能力无关
4050与4090解码编码速度跟内容会完全一样
除4070以上NVENC变为两颗 单档用不到第二颗 要多档同时才会变两倍效能
来源4K 55Mbps 10bit HEVC
输出1080 2.5Mbps 8bit AVC
Xmedia Recode
输出 NVENC MP4
转换率1x 25fps CPU 100% GPU NVDEC 0% NVENC 1%
很明显瓶颈在解码
vs
ffmpeg NVDEC解码 CUDA缩放 NVENC编码
全部在GPU上处理
nvdec+scale_cuda+nvenc
ffmpeg -y -hwaccel_device 0 -hwaccel cuda -hwaccel_output_format cuda -i
input -vf "scale_cuda=-1:1080:format=yuv420p" -c:v h264_nvenc -b:v 2.5M output
转换率10x 255fps CPU 5% GPU NVDEC 100% NVENC 30%
或是补个-preset slow
转换率6x 150fps CPU 3% GPU NVDEC 40% NVENC 40%
用NVDEC解码+CUDA的影像处理 如缩放 再接libx264慢慢磨也可以
当然这个方式只适用纯转码不碰内容微调或修改
要用ffmpeg做编辑跟验证加除错 花的时间用任何软体转都不知道转几只了
还不算上搭配硬体加速後要注意内部流程格式
比较龟毛/安全/太闲的玩法有每个步骤拆开来跑 一步一步微调
省重复转换时间 减少相容性问题 但用raw当中继...
我觉得开源方案不支援硬体解码很正常 因为编码是收敛可控 只有一条路
呼叫CUDA从系统记忆体搬raw去编码 回传位元流 储存 收工
CUDA解码後在GPU记忆体上 除了CUDA功能(eg. h264_nvenc)外是不能直接使用的
需要从GPU记忆体搬回系统记忆体才能再套其他传统滤镜跟编码器
所以流程会产生多个分支跟n个问题
基於各种开源方案没办法像商业软体控制内部变因要硬上就会变灾难大集合
开源不上github让有经验的人做回报跟状况整理很难搞
很多corner case作者没精力处理
但issue那边会有神人回报跟提供workaround
Adobe会呼叫硬体解码 处理HEVC来源绝对比1倍快
ffmpeg硬体加速参考
https://trac.ffmpeg.org/wiki/HWAccelIntro
https://docs.nvidia.com/video-technologies/video-codec-sdk/12.0/ffmpeg-
with-nvidia-gpu/index.html
https://stackoverflow.com/questions/52029461/impossible-to-convert-between
-the-formats-supported-by-the-filter-error
--
◤ ◥ ◢ ◣
杰米,炸掉它吧。 ⊙▁⊙─ ─⊙▂⊙ 碰到问题,用C4就对了!
╰ ∕皿﹨ ◥皿◤ ╯
◥█◤◢ ◥ ︶◤
Adam Savage ◤ ︶ ◥◤ ﹨▼∕◥ James Hyneman
MYTHBUSTERS ◥ ◤\◥ by dajidali
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 125.228.92.1 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/AVEncode/M.1728622825.A.795.html
※ 编辑: YouCantGetME (125.228.92.1 台湾), 10/11/2024 13:23:48
1F:推 JKGOOD: 感谢Y大 感激不尽,学习中 10/12 07:57
2F:推 JKGOOD: 如果选CPU解码再给NVENC编码效率或品质会不会更好? 10/13 04:49
3F:→ JKGOOD: 还是解码NVDEC编码NVENC?Y大会建议哪种?谢谢 10/13 04:50
4F:推 JKGOOD: 我讲错了是NVDEC解码然後CPU编,我测试转档时,解码占用NV 10/13 08:07
5F:→ JKGOOD: DECODE15%,CPU 50% 10/13 08:07
6F:→ YouCantGetME: 目标10Mbps以上 preset比slow快都给nvnec编就好吧 10/13 16:11