08.10.2023, 13:42
Works fine here,...
(used yuv420p16 in the example)
import vapoursynth as vs
from vapoursynth import core
import subprocess
import ctypes
NVEnc = r'F:\Hybrid\64bit\NVEncC.exe'
ffmpeg= r'F:\Hybrid\64bit\ffmpeg.exe'
# Loading Plugins
core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/SourceFilter/LSmashSource/vslsmashsource.dll") # L-SMASH Source is only usable for mp4 and mov files
source_path=r"C:/Users/Selur/Desktop/TestSubs-1.mp4" # current color space: YUV420P8, bit depth: 8, resolution: 720x300, fps: 25, color matrix: 470bg, yuv luminance scale: limited, scanorder: progressive, Note storage resolution is 720x304
source_path=r'G:\TestClips&Co\test.avi' # current color space: YUV420P8, bit depth: 8, resolution: 640x352, fps: 25, color matrix: 470bg, yuv luminance scale: limited, scanorder: progressive
source_path="C:/Users/Selur/Desktop/TestVideo.mp4"
clip = core.lsmas.LWLibavSource(source=source_path, format="YUV420P8", stream_index=0, cache=0, prefer_hw=0)
clip = clip.resize.Bicubic(format=vs.YUV420P16)
w = clip.width
h = clip.height
bitdepth=16
Ysize = w * h * bitdepth // 8
Usize = w * h//4 * bitdepth // 8
Vsize = w * h//4 * bitdepth // 8
frame_len = Ysize + Usize + Vsize #YUV420
command = [NVEnc,
'--avhw',
'--input "'+source_path+'" '
'-c raw',
'--output-res '+str(w)+'x'+str(h),
'--output-csp yuv420p',
'--output-depth '+str(bitdepth),
'--output-format raw',
'--output -',
]
command = [ ffmpeg, '-i', source_path,'-vcodec', 'rawvideo', '-pix_fmt', 'yuv420p16', '-f', 'rawvideo', '-']
command = ' '.join(command)
core.log_message(2,command)
pipe = subprocess.Popen(command, stdout = subprocess.PIPE, bufsize=frame_len)
def load_frame(n,f):
try:
vs_frame = f.copy()
for i, size in enumerate([Ysize, Usize, Vsize]):
ctypes.memmove(vs_frame.get_write_ptr(i), pipe.stdout.read(size), size)
pipe.stdout.flush()
except Exception as e:
raise ValueError(repr(e))
return vs_frame
try:
clip = core.std.ModifyFrame(clip, clip, load_frame)
except ValueError as e:
pipe.terminate()
print(e)
clip.set_output()
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.