avisynth不支持UTF-8源文件

时间:2014-08-18 13:21:13

标签: unicode utf-8 ffmpeg directshow avisynth

我使用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文件名运行脚本?

2 个答案:

答案 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.dllffmsindex.exeFFMS2.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)享受它!