21

В настоящее время я использую командный файл, который (помимо прочего) запускает следующую командную строку handbrakecli для преобразования видео:

HandBrakeCLI.exe -v0 --input "D:\input.mkv" --preset="Universal" --ipod-atom -t 1 --angle 1 --gain 0 --output="D:\output.mp4"

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

Однако со временем handbrakecli изо всех сил пытается конвертировать все больше и больше видео до такой степени, что мне нужно искать альтернативу. Это не помогло фактом, что журналы не дают абсолютно никакой информации относительно того, почему это потерпело крах. Это видео, например, разбилось на 71% из-за конверсии, и это последние 4 строки:

AC3 Passthru requested and input codec is not compatible for track 2, using AC3 encoder
x264 [info]: using SAR=9593/9600
x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
x264 [info]: profile Constrained Baseline, level 3.0

Не очень полезно.

Я рассмотрел использование ffmpeg в качестве альтернативы, но все примеры, которые я видел в Интернете, выполняют одно или несколько из следующих действий:

  1. Не работают (параметры командной строки не распознаются) - часто!
  2. Результат в файле, который больше, чем оригинал - очень часто!
  3. Искажение изображения, особенно когда конвертируется неожиданный размер видео (например, не широкоэкранный PAL)
  4. Удалить аудио
  5. Результатом будет видео, которое iPhone, iPod или iPad не будут воспроизводить

Существует ли приличная универсальная командная строка ffmepg, которая обеспечит успешную работу любого видео на всех устройствах Apple, а также уменьшит размер файла?

Бонусные баллы, если оно будет уменьшать (но не искажать) любое видео более 720p.

2 ответа2

27

Вот мой взгляд на это. Я возьму в качестве цели iPhone 4 или более новый (включая все iPad): H.264 Основной профиль, уровень 3.1

ffmpeg -i input.mp4 -vcodec libx264 -profile:v main -level 3.1 -preset medium -crf 23 -x264-params ref=4 -acodec copy -movflags +faststart output.mp4

Значения, которые вы можете изменить:

  • -crf 23 : постоянная настройка качества. Более высокое значение = меньшее качество, меньший файл. Ниже = лучшее качество, больший файл. Значения вменяемые [18 - 24]
  • -preset medium : если это слишком медленно для вас, используйте более быстрый пресет. Если у вас есть терпение, используйте более медленный. Смотрите здесь для получения дополнительной информации.
  • -acodec copy : Пытается скопировать звуковую дорожку в контейнер MP4. Если его невозможно скопировать, вам придется перекодировать его в AAC/MP3/AC3 ... например, -acodec libmp3lame

Если ваше видео больше 720p, добавьте следующее после ввода:

-vf "scale=-2:720:flags=lanczos"

Это уменьшит ваше видео до 720p и сохранит соотношение сторон. Используемый алгоритм масштабирования будет Lanczos, так как он намного лучше, чем по умолчанию.

0

Это просто, но у меня сразу получилось на iPad 3

ffmpeg -i inputfile outputfile.m4v

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .