【问题标题】:UTF-8 source files are not supported in avisynthavisynth 不支持 UTF-8 源文件
【发布时间】:2014-08-18 13:21:12
【问题描述】:

我使用 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,将脚本另存为不带BOM的UTF-8,然后看看是否有效。

但是,我无法解决问题。当我在记事本中打开脚本并将其保存为 utf-8 格式时,出现以下错误:

不支持UTF-8源文件,用ANSI编码重新保存脚本

我该如何解决这个问题,如何使用 UTF-8 文件名运行我的脚本?

【问题讨论】:

  • 你在调用ffvideosource时是否尝试使用参数utf8=true
  • 是的,我将它用作:ffvideosource(x,utf8=true),但它不起作用

标签: unicode utf-8 ffmpeg directshow avisynth


【解决方案1】:

“无 BOM”很重要。您需要将文件保存为原始 UTF-8,而不使用 Microsoft 样式的 faux-BOM。记事本不能这样做,它总是使用通常不受欢迎的 0xEF 0xBB 0xBF 标头保存 UTF-8 文件。大多数其他文本编辑器(例如 Notepad++)都可以正常工作。

AviSynth 并不能真正识别 Unicode,因此它不希望您使用 UTF-8,并且会给出错误消息以试图阻止您犯错。 ffvideosource 将 UTF-8 字节隐藏在 AviSynth 视为“ANSI”字符中的解决方法仅在 AviSynth 将文件视为 ANSI 时才有效。 AviSynth 没有非常复杂的编码猜测,因此删除虚假 BOM 足以证明它正在处理 ANSI。

【讨论】:

    【解决方案2】:

    在 AviSynth 中使用 UTF-8 时非常常见的问题。

    按照以下步骤操作:

    1. 检查插件文件夹。应该存在这三个文件:ffms2.dllffmsindex.exeFFMS2.avsi。如果您对ANSI 没有问题,我猜您的插件文件夹中没有FFMS2.avsi;在这种情况下,请下载最新版本的表单here

    2. 然后用 Notepad++ 创建一个AVS 文件。例如我这样做:

      x = "C:/Users/Nemat/Desktop/StackOverFlow/نعمت.mkv"
      ffmpegsource2(x,utf8=true)
      

      请注意,这里我使用了ffmpegsource2()

    3. 在 Notepad++ 的 Encoding 菜单中选择 Encode in UTF-8 without BOM

    4. 保存您的文件。

    5. 检查视频文件是否存在于寻址目录中。

    6. 双击您的AVS 文件。

    7. 尽情享受吧!

    【讨论】:

      猜你喜欢
      • 2011-09-22
      • 1970-01-01
      • 2014-01-03
      • 1970-01-01
      • 2018-08-07
      • 2011-10-08
      • 1970-01-01
      • 2012-04-21
      • 2018-08-21
      相关资源
      最近更新 更多