Log in

View Full Version : How do I load a VapourSynth script within an international filepath into VirtualDub2?


SilSinn9801
24th March 2019, 03:28
Hello, this is my first posting here on Doom9 and I seek some help regarding VirtualDub2 and VapourSynth:

I have a VapourSynth script file (with an English filename) stored inside a folder that has a Japanese name on it. That script essentially loads a PNG image (also with English filename), repeats it 60 times, then uses std.Expr to reduce its colors from 24-bit RGB precision (RGB888) to 12-bit RGB precision (RGB444) by integer-dividing all its pixel RGB values by 16, then multiplying by 17:

import vapoursynth as vs
import functools
core = vs.get_core()
# 24-bit RGB (RGB888)
baselogo = core.imwri.Read(filename="Team Shanghai Alice.png")*60
# Simulate 12-bit RGB (RGB444) by integer-dividing all RGB values by 16, then
# multiplying them by 17
rgb444logo = baselogo.std.Expr(expr=["x 16 /", "x 16 /", "x 16 /"])
rgb888logo = rgb444logo.std.Expr(expr=["x 17 *", "x 17 *", "x 17 *"])

rgb888logo.set_output()

When I load that VPY file into VirtualDub2, rather than getting the logo, I get error frames with the following error message:

Read: ImageMagick error: libimwri.dll: UnableToOpenBlob 'C:\Users\couga\Desk
top\東方Project\Team Shanghai Alice.png': No such file or directory @ erro
r/blob.c/OpenBlob/3094
Note that "東方" above should have read instead "東方".

I thought both VirtualDub2 and VapourSynth were Unicode-aware (my reason I migrated from AviSynth to VapourSynth was the latter's purported support for UTF-8), but it seems that this is not the case here. And I am running VirtualDub2 normally (not via Locale Emulator or any other AppLocale-like app).

Any insight on this?

Please note that the script code above has worked for me on pure-ASCII filepaths – an example is a test video I had uploaded to my YouTube channel:
https://www.youtube.com/watch?v=NII8C-OueKc

Thankee!

lansing
24th March 2019, 04:09
Have you save your vpy with utf-8 encoding?

poisondeathray
24th March 2019, 04:09
You can use ffms2 instead of imagemagick as the source filter
eg

baselogo = core.ffms2.Source(r'C:\Users\couga\Desktop\東方Project\Team Shanghai Alice.png')*60

SilSinn9801
24th March 2019, 04:28
Have you save your vpy with utf-8 encoding?

Yes, it is UTF-8, otherwise the script would fail to load altogether, as the parser would encounter invalid UTF-8 bytes like FE and FF, so UTF-8 is mandatory.

You can use ffms2 instead of imagemagick as the source filter
eg

baselogo = core.ffms2.Source(r'C:\Users\couga\Desktop\東方Project\Team Shanghai Alice.png')*60


I tried your code and now the script fails to load, giving me this error:

Avisynth open failure:
Python exception: Source: No video track found

Traceback (most recent call last):
File "src\cython\vapoursynth.pyx", line 1927, in
vapoursynth.vpy_evaluateScript
File "src\cython\vapoursynth.pyx", line 1928, in
vapoursynth.vpy_evaluateScript
File
"C:\Users\couga\Desktop\東方Project\TeamShanghaiAlice.v
py", line 5, in <module>
baselogo =
core.ffms2.Source(r'C:\Users\couga\Desktop\東方Project\Te
am Shanghai Alice.png')*60
File "src\cython\vapoursynth.pyx", line 1833, in
vapoursynth.Function.__call__
vapoursynth.Error: Source: No video track found

poisondeathray
24th March 2019, 04:30
You might be using a ffms2 version that does not support PNG . Try another version

SilSinn9801
24th March 2019, 04:36
You might be using a ffms2 version that does not support PNG . Try another version

Can you show me a PNG-enabled, x64 version of ffms2.dll then? The one I got came from ffms2000-test8.7z:
https://www.dropbox.com/s/snepd7t006fpg8o/ffms2000-test8.7z
which was listed on this Doom9 thread:
https://forum.doom9.org/archive/index.php/t-174469.html

poisondeathray
24th March 2019, 04:37
Yes, it works here with other ffms2 versions

And I can replicate the error with ffms2-2.23.1-msvc, and ffms2000-test8 => these versions do not support PNG. And they are older, don't support newer codecs like AV1

This one works, recent from 2019
https://forum.doom9.org/showthread.php?t=176198

SilSinn9801
24th March 2019, 04:55
I tried this new ffms2.dll and now it works! Thankee! Now back to work.

Mystery Keeper
26th March 2019, 18:02
Why would you need to load it into VirtualDub2 in the first place? You can open it with VapourSynth Editor, hook it to FFMPEG and encode with the codec of your choice.

SilSinn9801
17th April 2019, 18:30
Why would you need to load it into VirtualDub2 in the first place? You can open it with VapourSynth Editor, hook it to FFMPEG and encode with the codec of your choice.

The most recent VirtualDub2 version I have also hooks up to FFMPEG and even x264 to export to MP4, although I still haven't figured out how to successfully do 2-pass encoding there, although that is a separate topic that should be best discussed on a separate VirtualDub (not VapourSynth) thread. But thankee anyway!