Ошибка использования скрипта avisynth в качестве входных данных для ffmpeg

Я искал в интернете и не нашел решения. Я надеюсь, что этот вопрос не снимается как дубликат.

У меня есть следующие файлы в той же папке:

  • ffmpeg.exe (32-разрядная версия)
  • IN.mp4 (видеокодек - AVC, аудиокодек - PCM)
  • Пакетные файлы RUN_FILE.bat и RUN_AVS.bat
  • SCRIPT.avs (файл сценария avisynth)
  • MSharpen.dll (заточка фильтра для avisynth)

Текст внутри RUN_FILE.bat:

ffmpeg -i "IN.mp4" -c:v libx264 -crf 24 -c:a libmp3lame -aq 2 OUT.mp4

Текст внутри RUN_AVS.bat:

ffmpeg -i "SCRIPT.avs" -c:v libx264 -crf 24 -c:a libmp3lame -aq 2 OUT.mp4

Текст внутри SCRIPT.avs (3 строки):

LoadPlugin("D:\MSharpen.dll")

DirectShowSource("D:\IN.MP4")

MSharpen(15,150) 

Если я пытаюсь загрузить скрипт avisynth с помощью внешней программы, такой как media player classic, он работает нормально (и обостряет видеокадры).

Переход в командную строку и запуск RUN_FILE.bat работает как положено, однако работает RUN_AVS.bat Я получаю следующую ошибку (см. Скриншот):

сообщение об ошибке

Я нахожу это запутанным, так как ffmpeg настроен с --enable-avisynth,

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

2 ответа

Решение

Ну... в конце концов это был вопрос версий.

Замечание rogerdpack заставило меня систематически пробовать старые версии ffmpeg и т. д. Я дал ему ответ +1, но я думаю, что ответ должен быть таким, чтобы это было полное решение вопроса, поэтому я пишу свой собственный ответ. Надеюсь, вы понимаете rogerdpack:-)

В любом случае, вот комбинация, которая сработала для меня (я надеюсь, что размещение URL-адресов в порядке):

FFMPEG 32-битная версия 2.5.2 (загружается с http://ffmpeg.zeranoe.com/)

Avisynth 2.5.8 (скачано с официальной сборки)

Плагин MSharpen для avisynth (загружается с официальной ссылки MSharpen).

Убедитесь, что вы скопировали MSharpen.dll в папку плагина avisynth и перезагрузили компьютер. В моем случае папка плагина C:\Program Files (x86)\AviSynth 2.5\plugins,

Кстати, я использую Windows 7 Ultimate с SP1 (64 бит) с Intel i5-3570K, 16 ГБ оперативной памяти и т. Д. Возможно, я должен был заявить об этом в OP.

Для чего это стоит, вот мое решение.

Расположение папок и файлов выглядит следующим образом:

У меня есть основная папка; имя не имеет значения - давайте назовем его "ГЛАВНЫЙ". В "MAIN" у меня есть 2 файла и 2 папки.

2 файла:

  1. ffmpeg.exe (версия 2.5.2, 32-разрядная версия)
  2. BatchConvert.bat

2 папки:

  1. Источник (содержит все видео файлы)
  2. Цель (будет содержать закодированные выходные видеофайлы)

Файл BatchConvert.bat имеет следующий текст:

для %%a in ("Source*.*") do @echo DirectShowSource("%%a") >> "batchScript.avs" && @echo MSharpen(10,120) >> "batchScript.avs" && ffmpeg -i "batchScript.avs" -n -c:v libx264 -crf 24 -c: libmp3lame -b: пауза"Target\%%~na.mp4" && del "batchScript.avs"192k

Пакетный файл в основном сканирует все файлы из "Source" и кодирует их в "Target", и пропускает файлы, которые уже были закодированы. Это не меняет файлы в "Source" вообще, на всякий случай.

Все, что осталось сделать, это скопировать все видео в Source и запустить BatchConvert.bat!

Вы пробовали поискать линию, выделенную красным на скриншоте?

Из того, что я нашел здесь http://ffmpeg.zeranoe.com/forum/viewtopic.php?t=1084 и из других источников, неизвестная ошибка может быть связана с различием в 32/64-битных сборках либо в ffmpeg, либо в avisynth. Также может возникнуть проблема, если вы используете Avisynth 2.5.8 вместо 2.6 (откройте скрипт avisynth, содержащий "Version()" в качестве последней команды в любом плеере, чтобы найти, какой из них у вас есть). Наконец, вы можете попробовать открыть свой скрипт в x264.exe вместо ffmpeg и посмотреть, работает ли он.

Я бы опубликовал это в комментариях к ответу, но мне пока не разрешено комментировать.

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