rigaya / NVEnc

NVENCによる高速エンコードの性能実験
https://rigaya34589.blog.fc2.com/blog-category-17.html
Other
1.03k stars 108 forks source link

The transcoding file and source file screens are not synchronized? #562

Closed staxrip727 closed 3 months ago

staxrip727 commented 4 months ago

The same frame is different after transcoding, Why? QSV is also like this.

staxrip727 commented 4 months ago

source nvenc1 target nvenc2

rigaya commented 4 months ago

Timestamps might be changed if the first frame of your input file is not a keyframe, as video can be decoded only from a keyframe.

NVEnc/QSVEnc will change timestamp in such cases, therefore comparing on the same time might not result in the same frame.

staxrip727 commented 4 months ago

Timestamps might be changed if the first frame of your input file is not a keyframe, as video can be decoded only from a keyframe.

NVEnc/QSVEnc will change timestamp in such cases, therefore comparing on the same time might not result in the same frame.

How to solve it? FFMPEG+NVENC is normal, but I want to use this one as it has a wide range of adjustable parameters. The most important thing is fast speed.

staxrip727 commented 4 months ago

Not only this file, but almost all of them are in this situation.

rigaya commented 4 months ago

I don’t really think you need to “solve” it, as it is just changing the first keyframe to the start point of the video.

However, adding “--timestamp-passthrough” might work if avhw or avsw reader is used.

staxrip727 commented 4 months ago

I don’t really think you need to “solve” it, as it is just changing the first keyframe to the start point of the video.

However, adding “--timestamp-passthrough” might work if avhw or avsw reader is used.

It's still the same after adding it.

How can VMAF score correctly if frames cannot be synchronized?

rigaya commented 4 months ago

If --timestamp-passthrough does not work, there will be no way to change this.

staxrip727 commented 4 months ago

I tried the previous versions 4. x 5. x 6. x, and they all had the same issue.

I think this is caused by the decoding method.

staxrip727 commented 4 months ago

Another question, about --avsync

--avsync vfr encoding window displays vfr OK --avsync forcecfr encoding window displays forcecfr OK

--avsync cfr encoding window displays vfr???

--------------------------- Video encoding ---------------------------

NVEncC 7.41

"F:\Program Files (x86)\StaxRip\Apps\Encoders\NVEncC\NVEncC64.exe" --avhw --avsync cfr --vbr 4096 --codec h265 --preset P1 --output-depth 10 --profile main10 --multipass 2pass-full --qp-max 41 --max-bitrate 10240 --bref-mode each --lookahead 12 --colormatrix bt2020nc --colorprim bt2020 --transfer arib-std-b67 --output-res 1920x1080 -i "E:\Badminton\CCTV Olympics 4K 2023 Sudirman Cup Badminton China VS Japan 20230520 HEVC 2160p HLG AAC-WWSL.mp4" -o "E:\Badminton\CCTV Olympics 4K 2023 Sudirman Cup Badminton China VS Japan 20230520 HEVC 2160p HLG AAC-WWSL_temp\CCTV Olympics 4K 2023 Sudirman Cup Badminton China VS Japan 20230520 HEVC 2160p HLG AAC-WWSL_new p1 cfr_out.h265"

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
E:\Badminton\CCTV Olympics 4K 2023 Sudirman Cup Badminton China VS Japan 20230520 HEVC 2160p HLG AAC-WWSL_temp\CCTV Olympics 4K 2023 Sudirman Cup Badminton China VS Japan 20230520 HEVC 2160p HLG AAC-WWSL_new p1 cfr_out.h265
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NVEncC (x64) 7.41 (r2681) by rigaya, Jan 22 2024 13:02:15 (VC 1929/Win)
OS Version     Windows 10 x64 (19045) [UTF-8]
CPU            12th Gen Intel Core i9-12900 [4.89GHz] (8P+8E,16C/24T)
GPU            #0: NVIDIA RTX A4000 (6144 cores, 1560 MHz)[PCIe4x16][538.15]
NVENC / CUDA   NVENC API 12.1, CUDA 12.2, schedule mode: auto
Input Buffers  CUDA, 32 frames
Input Info     avcuvid: H.265/HEVC, 3840x2160, 50/1 fps

> AVSync         vfr ???

Vpp Filters    copyDtoD
rigaya commented 4 months ago

Actually, --avsync cfr was an old option and now does not reflect the actual behavior as it acts nearly like vfr, I've changed the option name to "auto" in NVEnc 7.43.

If you need cfr, please use --avsync forcecfr.