: 推 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