В настоящее время я использую командный файл, который (помимо прочего) запускает следующую командную строку 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 в качестве альтернативы, но все примеры, которые я видел в Интернете, выполняют одно или несколько из следующих действий:
- Не работают (параметры командной строки не распознаются) - часто!
- Результат в файле, который больше, чем оригинал - очень часто!
- Искажение изображения, особенно когда конвертируется неожиданный размер видео (например, не широкоэкранный PAL)
- Удалить аудио
- Результатом будет видео, которое iPhone, iPod или iPad не будут воспроизводить
Существует ли приличная универсальная командная строка ffmepg, которая обеспечит успешную работу любого видео на всех устройствах Apple, а также уменьшит размер файла?
Бонусные баллы, если оно будет уменьшать (но не искажать) любое видео более 720p.
Ответы:
Вот мой взгляд на это. Я возьму iPhone 4 или новее (включая все iPad) в качестве цели: H.264 Основной профиль, уровень 3.1
Значения, которые вы можете изменить:
-crf 23
: Постоянная настройка качества. Более высокое значение = меньшее качество, меньший файл. Ниже = лучшее качество, больший файл. Значения вменяемые [18 - 24]-preset medium
: Если это слишком медленно для вас, используйте более быстрый пресет. Если у вас есть терпение, используйте более медленный. Смотрите здесь для получения дополнительной информации.-acodec copy
: Пытается скопировать звуковую дорожку в контейнер MP4. Если он не может быть скопирован, вам придется перекодировать его в AAC / MP3 / AC3 ... например-acodec libmp3lame
Если ваше видео больше 720p, добавьте следующее после ввода:
-vf "scale=-2:720:flags=lanczos"
Это уменьшит ваше видео до 720p и сохранит соотношение сторон. Используемый алгоритм масштабирования будет Lanczos, так как он намного лучше, чем по умолчанию.
источник
-vf "scale=-2:720:flags=lanczos"
вместо этого. Добавление-movflags +faststart
рекомендуется, если файл будет просматриваться с помощью прогрессивной загрузки, например, в браузере (и если нет, то опция, безусловно, не помешает).x264-params
. Если не строить это самому, есть ли способ обойти эту проблему?-x264-params
работает нормально. Вы уверены, что ничего не пропустили? Опция в основном безопасна, чтобы избежать наличия более 4 опорных кадров, которые могут не обрабатываться более старым декодером.-acodec libmp3lame
не работает для меня Чтобы включить звук на моем IPad Mini I перестроенffmpeg
сnonfree
вариантом и использовалиlibfdk_aac
закодированы.Это просто, но у меня сразу получилось на iPad 3
источник