Преобразование контейнера или перекодирование фильмов в iPhone из командной строки (os x)

За эти годы я собрал много фильмов в разных контейнерных форматах (avi, mp4, mkv) и тоже закодировал разными кодеками.

Теперь нужно преобразовать контейнеры (или перекодировать их, если это абсолютно необходимо) в фильмы, совместимые с iPhone.

Проведя долгое время в гугле, все еще не знал точных ответов на следующие вопросы - поэтому, пожалуйста, подтвердите их или, пожалуйста, дайте правильные ответы

  1. iPhone может воспроизводить только формат контейнера mp4, поэтому mp4это единственный пригодный для использования контейнер для фильмов iPhone.
  2. В каких кодеках могут быть потоки? (видео/аудио и субтитры)
  3. Можно ли встроить "SOFT" субтитры в контейнер mp4? (то, что я читал - да, но тут есть некоторые подводные камни) - подразумеваются мягкие субтитры, чтобы не "вжигать их в видеопоток".
  4. Какова правильная логика для преобразования / перекодирования фильмов из разных форматов в желаемый формат, совместимый с iPhone? Моя идея примерно такова:

    • получить информацию из текущего фильма - например, из контейнера avi
    • если used codecsи используемое video resolutionсовместимо с iPhone (например, h264), измените только формат контейнера, в противном случае
    • перекодировать фильм с помощью:

    • если текущий фильм имеет меньшее разрешение, не меняйте - только перекодируйте

    • если текущий фильм имеет более высокое разрешение, измените его разрешение пропорционально потребностям iPhone.

Все вышеперечисленное нужно сделать из командной строки в Mac OS X - так, с помощью ffmpeg или mencoder и тому подобного. (пожалуйста, не предлагайте мне пакетные преобразования с помощью приложения без командной строки)

Вопросы в основном касаются whole workflow, какие самые распространенные подводные камни, рекомендации и т.д.

Был бы рад некоторым внешним ссылкам на некоторые хорошие статьи о вышеизложенном.

Это мой первый вопрос здесь, и я надеюсь, что с правильным типом вопроса на этом сайте все в порядке:

  • методы пост-продакшн
  • управление активами, мультимедиа и форматы файлов
  • установка, настройка и эксплуатация аппаратного или программного обеспечения, связанного с этими темами
Какие версии iPhone вы хотите поддерживать?
@LordNeckbeard да, забыл указать, в основном потому, что большинство моих текущих фильмов имеют разрешение ниже 720p. Но ладно - iPhone4 и выше.
@ jm666 - Я заметил, что на ваш вопрос не было ответов уже несколько дней. Одна вещь, которую я заметил, это то, что он, кажется, задает несколько вопросов одновременно. Возможно, вы сможете разбить его на несколько вопросов, на которые легче ответить. Например, «Какие видеоформаты мне следует использовать при таргетинге на iPhone?» может быть отдельным вопросом. Точно так же вопрос о субтитрах и вопрос о транскодировании можно было бы задать отдельно.
Это сделает две вещи. Это сделает вопросы более полезными, поскольку люди, которые ищут только часть того, что вы делаете, найдут ответ. Это также облегчило бы ответ, поскольку кто-то мог бы ответить только на те части, которые он знает, не чувствуя, что на самом деле он не отвечает на вопрос.
@AJHenderson - да, это сложная проблема. Спросил в надежде, что кто-то уже сталкивался с проблемой: "преобразовать свою коллекцию фильмов, подходящую для iPhone". Кажется - мало кто занимается такими глупостями.. ;) Если не получил ответа, попробую разбить вопрос на более мелкие части и удалю этот. Спасибо за предложение.

Ответы (1)

Вы можете использовать ffprobe (который поставляется с ffmpeg), чтобы получить информацию о ваших файлах фильмов из командной строки.

Тем не менее, вам может потребоваться некоторый шелл-фу, чтобы преобразовать вывод ffprobe во что-то, что вы можете использовать. Я делал это в прошлом; в основном я передаю вывод ffprobe в sed или awk, чтобы получить биты информации, которые мне нужны, а затем использую это для управления параметрами ffmpeg.

FFmpeg Wiki: FFprobe Tips содержит несколько примеров.