我使用avisynth从音频中分离视频。 当我使用
x = "m.mkv"
ffvideosource(x)
它工作正常,但是当我将视频文件名更改为UTF-8并将我的脚本更改为:
x = "م.mkv"
ffvideosource(x)
我收到以下错误: 未能打开散列avisynth
我发现一个链接(UTF-8 source files are not supported)告诉UTF-8文件名在avisynth中不起作用,为了解决问题,它说:
在调用ffvideosource时指定参数utf8 = true,将脚本保存为UTF-8而不使用BOM,然后查看是否有效。
但是,我无法解决问题。当我在记事本中打开脚本并以utf-8格式保存时,我收到以下错误:
不支持UTF-8源文件,使用ANSI编码重新保存脚本
如何解决问题,如何以UTF-8文件名运行脚本?
答案 0 :(得分:2)
“Withou BOM”非常重要。您需要将文件保存为原始UTF-8而不使用Microsoft风格的虚假BOM。记事本不能这样做,它总是使用通常不需要的0xEF 0xBB 0xBF标头保存UTF-8文件。大多数其他文本编辑器(例如Notepad ++)可以正确地完成它。
Avisynth并不是真正支持Unicode的,所以它不希望你使用UTF-8,并会给出错误信息以试图阻止你犯错误。 ffvideosource隐藏UTF-8字节的工作方式只有在Avisynth将文件视为ANSI时,Avisynth才会将其视为“ANSI”字符。 Avisynth没有非常复杂的编码猜测,因此删除虚假BOM足以说服它处理ANSI。
答案 1 :(得分:1)
在AviSynth中使用UTF-8时非常常见的问题。
请按照以下步骤操作:
1)检查plugins文件夹。应该存在以下三个文件:ffms2.dll
,ffmsindex.exe
和FFMS2.avsi
。如果您对ANSI
没有问题,我猜您在插件文件夹中没有FFMS2.avsi
;在这种情况下,请下载最新版本的表单here。
2)之后用Notepad ++制作一个AVS
文件。例如,我这样做:
x = "C:/Users/Nemat/Desktop/StackOverFlow/نعمت.mkv"
ffmpegsource2(x,utf8=true)
请注意,我在这里使用了ffmpegsource2()
。
3)在Notepadd ++的Encoding
菜单中选择Encode in UTF-8 without BOM
。
4)保存文件。
5)检查地址目录中是否存在视频文件。
6)双击AVS
文件。
7)享受它!