ffmpeg h264 проблема: "Файл для пресета... не найден" в XP

У меня есть XP, и так как я не знаком с компиляцией, я скачал win32-статическую версию ffmpeg, svn-r26251. Я хочу изменить размер MP4 (изначально 1280x720) видео, чтобы получить меньший размер файла примерно с тем же качеством. Моя команда:

ffmpeg -i ma.mp4 -vcodec libx264 -vpre hq -s 640x360 ma2.mp4

однако он говорит: "файл для предустановки" hq "не найден". я попробовал -fpre, без разницы. без libx264 результирующий файл ma2.mp4 не будет воспроизводиться в jwplayer, вы просто слышите звук. (причина в том, что это не "mpeg4(h264)", это просто "mpeg4"). что я должен делать?

6 ответов

Для предустановки x264 вместо использования "-vpre" новые сборки будут работать с "-preset", так как это вызовет предустановку x264 напрямую.

Эта проблема, похоже, связана с XP, она работает на Win2K. Я проверил с помощью filemon, и он показывает, что он ищет в X:\usr\local\share\ffmpeg файлы libx264-veryslow.ffpreset или veryslow.ffpreset - где X - диск, с которого вы запускаете ffmpeg. Я создал путь на диске, скопировал все пресеты и теперь он работает!

ffmpeg говорит, что не может найти ваш предустановленный файл, hq.ffpreset в твоем случае. больше информации в ffmpeg docs

Предварительные настройки [EDIT] предназначены только для удобства. если у вас есть hq.ffpreset файл, так что просто взять все из него и положить в командной строке напрямую

Здесь представлены два решения для пользователей Windows, которые помогут FFmpeg найти папку с предустановками x264. Сопровождающее каждое решение представляет собой пакетный файл для полной автоматизации решения.

Используйте только одно из этих решений.

Первое решение самое простое, но вам придется повторять его на каждом диске, на котором вы хотите использовать FFmpeg. Если вы не хотите этого делать, используйте второе решение. Это немного сложнее, но пакетный файл делает процесс безболезненным.

Опять же, не используйте оба решения. Я решительно поддерживаю решение 2.


РЕШЕНИЕ 1

FFmpeg ищет предустановки x264 в C:\usr\local\share\ffmpeg каталог, который необходимо создать в Windows:

  • Создать папку C:\usr\local\share\ffmpeg
  • Скопируйте все ваши предустановленные файлы из ~ffmpeg\presets в новую папку.

Или запустите следующее как командный файл:

    ::BEGIN SOLUTION 1 BATCH FILE
    md C:\usr\local\share\ffmpeg
    copy "C:\Program Files (x86)\ffmpeg\presets" C:\usr\local\share\ffmpeg
    ::END SOLUTION 1 BATCH FILE

Перед запуском этого командного файла обязательно измените C:\Program Files (x86)\ffmpeg\presets в текущее местоположение вашего ~\ffmpeg\presets папка.

РЕШЕНИЕ 2

FFmpeg ищет предустановки x264 в %HOME%\.ffmpeg среда, которую необходимо создать в Windows:

Сначала создайте две папки:

  • Создать папку HOME (в этом примере я найду его в C:\Users\your_user_name\HOME };
  • В папке HOME создать еще одну новую папку с именем .ffmpeg (обратите внимание на точку в начале имени файла);
  • Скопируйте все предустановленные файлы из папки ~\ffmpeg\presets в новую папку C:\Users\your_user_name\HOME\.ffmpeg
  • Не забудьте изменить your_user_name на ваше действительное имя пользователя

Затем установите папку HOME как переменная среды %HOME%:

  • Открыть окно проводника;
  • Перейдите к Control Panel\System and Security\System;
  • Выбрать Advanced system settings (левая сторона окна);
  • Выбрать Environment Variables (кнопка внизу);
  • Выбрать New... (в разделе "Системные переменные" сделать предустановки доступными для всех пользователей);
  • В Variable name: войти HOME
  • В Variable value: войти C:\Users\your_user_name\HOME
  • Не забудьте изменить your_user_name на ваше действительное имя пользователя

Или запустите следующее как командный файл:

    ::BEGIN SOLUTION 2 BATCH FILE
    md %userprofile%\HOME
    md %userprofile%\HOME\.ffmpeg
    copy "C:\Program Files (x86)\ffmpeg\presets" %userprofile%\HOME\.ffmpeg
    setx HOME %userprofile%\HOME\ /m
    ::END SOLUTION 2 BATCH FILE

Перед запуском этого командного файла обязательно измените C:\Program Files (x86)\ffmpeg\presets в текущее местоположение вашего ~\ffmpeg\presets папка.

Проект ffmpeg был переименован в avconv, поэтому имена каталогов были изменены, чтобы отразить это. В документации говорится:

Сначала ffmpeg ищет файл с именем arg.ffpreset в каталогах "$FFMPEG_DATADIR" (если установлено) и "$HOME/.ffmpeg", а также в каталоге данных, определенном во время настройки (обычно "PREFIX/share/ffmpeg") или в папке 'ffpresets' вдоль исполняемого файла на win32, в указанном порядке. Например, если аргумент - libx264-max, он будет искать файл 'libx264-max.ffpreset'.

Это означает, что теперь будет смотреть в $HOME/.avconv а также PREFIX/share/avconv что обычно /usr/share/avconv,

Поскольку вы работаете в Windows, если вы не измените свою переменную%HOME%, вам нужно будет ввести полный путь к "hq.ffpreset". Вместо этого он может называться "libx264-hq.ffpreset". Кроме того, это может или не может применяться, но убедитесь, что ваша сборка была сделана с поддержкой libx264. Если бы я знал, если бы мне разрешили, я бы связался с моей личной общей версией ffmpeg 1.2 для win32. Я могу подтвердить, что эта команда работает с этой версией.

Если у вас нет предустановленного файла HQ, я нашел ссылку на его версию здесь: https://raw.github.com/joeyblake/FFmpeg-Presets/master/libx264-hq.ffpreset

Поместите это куда хотите (где-то на%PATH% может работать хорошо).

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