GT330のみを搭載したパソコンで NVENCが利用可能か確認 [ダブルクリック].bat を実行すると、実際には未対応なのにも関わらず以下のように利用可能との表示が出てしまいます。
NVEncC (x86) 5.15 (r1658) by rigaya, Sep 12 2020 23:34:13 (VC 1900/Win/avx2)
[NVENC API v10.0, CUDA 8.0]
reader: raw, y4m, avi, avs, vpy, avsw, avhw [H.264/AVC, H.265/HEVC, MPEG2, VP8, VP9, VC-1, MPEG1, MPEG4]
InitCuda: device #0.
Checking Environment Info...
NVEncC (x86) 5.15 (r1658) by rigaya, Sep 12 2020 23:34:13 (VC 1900/Win/avx2)
OS Version Windows 10 x64 (19041)
CPU Intel Core2 Quad Q6600 @ 2.40GHz (4C/4T)
cuInit: Success.
Failed to find required function "cuvidGetDecoderCaps" in nvcuvid.dll
cuvidInit error:0x3e7 (CUDA_ERROR_UNKNOWN)
Failed to initialize CUDA.
Closed EncodeStatus.
Closing perf monitor...
Closing logger...
NVENCは利用可能です。
たしかにいつも利用可能とでるようになってしまっていますね。それまでのメッセージは正しいのですが。
次回対応したいと思います。
NVEncC64.exe -c hevc --preset quality --gop-len auto --sar 4:3 --bref-mode each --interlace tff --vpp-afs shift=true,drop=true,preset=anime,24fps=true,rff=true --audio-copy -i %1 -o %1.mp4
TSファイルを処理させる場合は問題ないのですが、MKVファイル(中身MPEG2)を処理させようとするとタイトルのエラーが出てしまいます。
どのようにすればエラーが出なくなるでしょうか。
NVEncC (x64) 5.15 (r1658) by rigaya, Sep 12 2020 23:40:28 (VC 1927/Win/avx2)
OS Version Windows 10 x64 (19041)
CPU AMD Ryzen 7 1700 Eight-Core Processor (8C/16T)
GPU #0: GeForce GTX 1660 (1408 cores, 1800 MHz)[PCIe3x16][456.55]
NVENC / CUDA NVENC API 10.0, CUDA 11.1, schedule mode: auto
Input Buffers CUDA, 20 frames
Input Info avcuvid: MPEG2, 1440x1080, 31865/1001 fps
Vpp Filters cspconv(nv12 -> yv12)
afs: clip(T 16, B 16, L 32, R 32), switch 64, coeff_shift 128
thre(shift 128, deint 48, Ymotion 112, Cmotion 224)
level 3, shift on, drop on, smooth on, force24 on
tune off, tb_order 1(tff), rff on, timecode off, log off
cspconv(yv12 -> nv12)
Output Info H.265/HEVC main @ Level auto
1440x1080p 4:3 25.467fps (25492/1001fps)
avwriter: hevc, aac => mp4
Encoder Preset quality
Rate Control CQP I:20 P:23 B:25
Lookahead off
GOP length 250 frames
B frames 3 frames [ref mode: each]
Ref frames 3 frames, MultiRef L0:auto L1:auto
AQ off
CU max / min auto / auto
Others mv:auto repeat-headers
afs: invalid call for m_streamsts.get_duration(285).:12, GPU 23%, VE 100%, VD 26%, est out size 240.6MB
Error while running filter "afs".
> どのようにすればエラーが出なくなるでしょうか。
いただいたログを見るとfpsが「Input Info avcuvid: MPEG2, 1440x1080, 31865/1001 fps」となっており、フレームレートが正しく認識できていないように思います(mkvでは、時間刻みが粗いことが多く、こうしたことが起こることがあります)。
"--fps 30000/1001"を追加してみると改善しないでしょうか?
ちょっと進みましたが、またすぐエラーになってしまいました。
NVEncC (x64) 5.15 (r1658) by rigaya, Sep 12 2020 23:40:28 (VC 1927/Win/avx2)
OS Version Windows 10 x64 (19041)
CPU AMD Ryzen 7 1700 Eight-Core Processor (8C/16T)
GPU #0: GeForce GTX 1660 (1408 cores, 1800 MHz)[PCIe3x16][456.55]
NVENC / CUDA NVENC API 10.0, CUDA 11.1, schedule mode: auto
Input Buffers CUDA, 20 frames
Input Info avcuvid: MPEG2, 1440x1080, 30000/1001 fps
Vpp Filters cspconv(nv12 -> yv12)
afs: clip(T 16, B 16, L 32, R 32), switch 64, coeff_shift 128
thre(shift 128, deint 48, Ymotion 112, Cmotion 224)
level 3, shift on, drop on, smooth on, force24 on
tune off, tb_order 1(tff), rff on, timecode off, log off
cspconv(yv12 -> nv12)
Output Info H.265/HEVC main @ Level auto
1440x1080p 4:3 23.976fps (24000/1001fps)
avwriter: hevc, aac => mp4
Encoder Preset quality
Rate Control CQP I:20 P:23 B:25
Lookahead off
GOP length 240 frames
B frames 3 frames [ref mode: each]
Ref frames 3 frames, MultiRef L0:auto L1:auto
AQ off
CU max / min auto / auto
Others mv:auto repeat-headers
afs: invalid call for m_streamsts.get_duration(614).2:06, GPU 24%, VE 99%, VD 29%, est out size 284.9MB
Error while running filter "afs".
encoded 491 frames, 195.46 fps, 2199.04 kbps, 5.37 MB
encode time 0:00:02, CPU: 6.6%, GPU: 24.7%, VE: 98.7%, VD: 28.7%, GPUClock: 1810MHz, VEClock: 1670MHz
frame type IDR 3
frame type I 3, avgQP 20.00, total size 0.19 MB
frame type P 123, avgQP 23.00, total size 2.84 MB
frame type B 365, avgQP 25.00, total size 2.33 MB
ダメでしたか。
こちらでも試してみましたが、単にtsをmkvにmuxしなおしたファイルでは特に問題なかったです。
フレームレートが正しく認識できないあたり、例えば固定フレームレートになっていないとか、そういったtimestamp周りの問題があるのかもしれません。そのような場合はvpp-afsは対応していないので、エラー終了すると思います。
使っているMKVファイルはTSファイルをTMPGでCMカットしてMKV出力として出したものです。
エンコードできなくて残念です。
エンコードできなかったMKVファイルですが、Demuxしてm2vとAACにしてm2vを突っ込んでみたところ無事エンコードできました。
mkv形式だとダメみたいでした。
とりあえず回避策がみつかったとのことでよかったです。mkvだとうまくいかないことはたしかにありそうです。