Исходные файлы UTF-8 не поддерживаются в avisynth

Я использую Avisynth для демультиплексирования видео из аудио. Когда я использую

 x = "m.mkv"
 ffvideosource(x)

Он работает правильно, но когда я меняю имя файла с видео на UTF-8, а мой сценарий выглядит так:

 x = "م.mkv"
 ffvideosource(x)

Я получил следующую ошибку: не удалось открыть для хеширования avisynth

Я нашел ссылку ( исходные файлы UTF-8 не поддерживаются), которая сообщает, что имя файла UTF-8 не работает в avisynth, и для устранения проблемы было сказано:

укажите параметр utf8=true при вызове ffvideosource, сохраните сценарий как UTF-8 без спецификации и посмотрите, работает ли он.

Но я не мог решить проблему. Открыв скрипт в блокноте и сохранив его в формате utf-8, я получил следующую ошибку:

UTF-8 Исходные файлы не поддерживаются, заново сохраните скрипт с кодировкой ANSI

Как я могу решить проблему, Как я могу запустить свой скрипт с именем файла UTF-8?

2 ответа

Решение

Очень распространенная проблема при использовании UTF-8 в AviSynth.

Следуй этим шагам:

1) Проверьте папку плагинов. Должны существовать эти три файла: ffms2.dll, ffmsindex.exe, а также FFMS2.avsi, Если у вас не было проблем с ANSIЯ думаю, что у вас нет FFMS2.avsi в вашей папке плагинов; В этой ситуации загрузите последнюю версию формы здесь.

2) После этого сделайте AVS файл с помощью Блокнота ++. Например я делаю это:

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

Обратите внимание, что здесь я использовал ffmpegsource2(),

3) В Encoding меню из Notepadd++ выберите Encode in UTF-8 without BOM,

4) Сохраните ваш файл.

5) Убедитесь, что видеофайл существует в указанном каталоге.

6) Двойной клик на вашем AVS файл.

7) Наслаждайся этим!

"Withou BOM" важен. Вам нужно сохранить файл как необработанный UTF-8 без искусственной спецификации в стиле Microsoft. Блокнот не может этого сделать, он всегда сохраняет файлы UTF-8 с нежелательным заголовком 0xEF 0xBB 0xBF. Большинство других текстовых редакторов (например, Notepad++) могут делать это правильно.

Avisynth на самом деле не поддерживает Unicode, поэтому он не хочет, чтобы вы использовали UTF-8, и выдаст это сообщение об ошибке, чтобы попытаться остановить вас от ошибок. Обходной путь ffvideosource для сокрытия байтов UTF-8 в том, что Avisynth видит как символы "ANSI", работает только до тех пор, пока Avisynth видит файл как ANSI. Avisynth не имеет очень сложного кодирования-угадывания, поэтому достаточно удалить поддельную спецификацию, чтобы убедить ее в том, что она имеет дело с ANSI.

Другие вопросы по тегам