Какая команда ffmpeg конвертирует видео для iPad / iPhone / iPod?


24

В настоящее время я использую командный файл, который (помимо прочего) запускает следующую командную строку 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.


Когда в последний раз вы обновляли handbrakecli?
Джин

Довольно часто в надежде, что сбой ошибка устранена. В настоящее время я использую 0.10.2 (2015060900) - MinGW x86_64.
Ричард

У меня было видео в формате mp4, которое отказывалось работать на iOS, и это была самая короткая команда, которую я мог представить, чтобы это исправить: ffmpeg -i broken_video.mp4 -pix_fmt yuv420p working_video.mp4
Бемму

Ответы:


30

Вот мой взгляд на это. Я возьму 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, так как он намного лучше, чем по умолчанию.


3
Вы можете использовать -vf "scale=-2:720:flags=lanczos"вместо этого. Добавление -movflags +faststartрекомендуется, если файл будет просматриваться с помощью прогрессивной загрузки, например, в браузере (и если нет, то опция, безусловно, не помешает).
Llogan

Сборка Zeranoe, которую я использую, не поддерживает x264-params. Если не строить это самому, есть ли способ обойти эту проблему?
Ричард

Я использую сборку Zeranoe самостоятельно и -x264-paramsработает нормально. Вы уверены, что ничего не пропустили? Опция в основном безопасна, чтобы избежать наличия более 4 опорных кадров, которые могут не обрабатываться более старым декодером.
Ely

-acodec libmp3lameне работает для меня Чтобы включить звук на моем IPad Mini I перестроен ffmpegс nonfreeвариантом и использовали libfdk_aacзакодированы.
Виталий Сергеевич

0

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

ffmpeg -i inputfile outputfile.m4v
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.