Как полностью автоматизировать преобразование видео в формат mp4, удобный для iTunes?

Я хочу реализовать полностью автоматизированное решение, которое будет выбирать видеофайлы из входящего каталога, обрабатывать их и помещать результат в специальный каталог iTunes «Автоматически добавлять в iTunes».

Прежде чем предлагать различные продукты, ознакомьтесь с требованиями:

  • Интерфейс командной строки, поэтому мы можем использовать его с cron
  • Используйте Pass Thru для видео- и аудиопотоков, если источник уже совместим с целевым форматом.
  • Скачать субтитры с внешнего сервиса (необязательно)
  • Встраивание существующих файлов SRT в выходное видео
  • Исправление метаданных из внешнего сервиса (необязательно)

Первоначально я бы сказал, что Handbrake должен уметь это делать, но я обнаружил, что handbrake никогда не будет выполнять Pass Thru для видео (это заявление, которое я получил от автора).

Поскольку вы ищете полностью автоматизированный процесс, я думаю, бессмысленно записывать ручной процесс. Я использую 3 программы, чтобы делать именно то, чего вы хотите, за исключением того, что это делается вручную. Я скачиваю в формате mp4, поэтому мне больше не нужен HandBrake для конвертации.
@Robuust, пожалуйста, поделитесь, какие программы вы используете. Их можно объединить с помощью AppleScript или Automator. Хотя это может не совсем соответствовать требованиям вопроса, оно может быть достаточно близко.
@ Надежный да, ручной процесс является хорошим примером , если используемые инструменты имеют интерфейс командной строки.

Ответы (7)

Z264

z264 будет просматривать каждый файл, но будет касаться только видеофайлов avi, flv, mpg, mpeg, wmv, vob, mkv и mp4, копируя видео- и аудиопотоки и перепаковывая, если это возможно, перекодируя только аудио, если это необходимо, и перекодируя только то, что видео необходимо, и оставит вас с дружественными iTunes, оптимизированными для атома файлами mp4, оставив оригиналы в вашей корзине. Он принимает разумные решения за вас о том, как перекодировать файлы, основываясь на том, как вы устанавливаете его переменные HandBrake (устанавливаются в строках 312-333).

проверьте файл на кодировку AVC и обертку flv, wmv или mkv и переоберните в контейнер mp4, в противном случае, если это еще не am mp4, перекодируйте в AVC mp4

z264 имеет несколько зависимостей (mediainfo, rmtrash, ffmpeg, SublerCLI и HandBrakeCLI)

  • скопируйте и вставьте раздел бинарной установки в новый сценарий bash и используйте его для загрузки и установки зависимостей в /usr/local/bin/ (создайте /usr/local и /usr/local/bin/, если их там еще нет)

  • создайте виртуальный диск объемом 2 ГБ с именем «Два», используя команду в разделе виртуального диска

    diskutil quiet erasevolume HFS+ 'Two' `hdiutil attach -nomount ram://4194304`
    
  • дважды проверьте определения команд (местоположения зависимостей) и правильное расположение (в «/usr/local/bin/»)

    change line 231 to read:  mediainfo="/usr/local/bin/mediainfo"
    change line 236 to read:  rmtrash="/usr/local/bin/rmtrash"
    change line 238 to read:  ffmpeg="/usr/local/bin/ffmpeg"
    change line 239 to read:  SublerCLI="/usr/local/bin/SublerCLI"
    change line 262 to read:  mediainfo="/usr/local/bin/mediainfo"
    change line 263 to read:  rmtrash="/usr/local/bin/rmtrash"
    change line 265 to read:  HandBrakeCLI="/usr/local/bin/HandBrakeCLI"
    
  • сохранить как z264 в /usr/local/bin/

  • сделать исполняемый файл

    sudo chmod +x /usr/local/bin/z264

  • используйте терминал для вызова z264 для одного файла, каталога файлов или вызовите его из cron для периодического обхода целых файловых систем

    z264 directory.full.of.mixed.video.filetypes/*
    

мелкие проблемы: пользователь должен уметь читать, отлаживать и использовать bash. z264 еще не подсчитывает, сколько процессов background_transcoder он порождает, а это означает, что если транскодов много, им потребуется некоторое время для их завершения, но они будут завершены. Вам также нужно много памяти (8 ГБ в порядке). Пользователям Snow Leopard потребуется установить команду очистки из инструментов разработчика xcode.

Спасибо! Перед тестированием, только глядя на описание и исходный код, кажется, что я искал. Я разместил код на github, поднимите тикет, чтобы я мог добавить вас в качестве администратора проекта github.com/z264/z264
@sorin @chillin Похоже, что после этапа перекодирования аудио он застрял в цикле:tty: illegal option -- - usage: tty [-s]
@sorin Я сталкивался с файлами, которые должны обрабатываться нормально, а которые нет, обычно это mkv с fataudio или аудио со слишком высокой скоростью кбит/с, а также процессы z264… и в результате получается файл, который не работает. Я думаю, что проблема… конечно, не в ffmpeg… и я хочу быть предельно ясным, и если это звучит расистски, то только для того, чтобы уколоть мельчайший булавочный укол в самое болезненное место на парне, который фактически сломал ручной тормоз ниже по течению несколько версий назад… потерял свой поезд… о, французские разработчики. Да. французские разработчики fn. Но на самом деле мы знаем, что проблема в Apple. Мы хотим слика, но не любой ценой!
mediainfo тоже иногда задыхается, но эмоциональной вложения нет. Но когда вы запускаете специальный транскод для чего-то для кого-то на процессорном узле, и этот маленький движок транскодирует свое маленькое сердце, и в результате получается файл, который, гм, мусор, имеет тенденцию раздражать. Но БОЛЬШОЕ УВАЖЕНИЕ к отладке разработчиков на других языках.

В настоящее время я использую Subler для преобразования MKV в MP4 и встраивания субтитров в процессе без перекодирования видео или аудио. Если мне нужно перекодировать DTS, чтобы его воспроизводил Apple TV, я использую MP4Tools . Однако оба они являются графическими интерфейсами, и я понятия не имею, можно ли их вызывать из командной строки. Я полагаю, что лучшим выбором будет MKVToolNix (при условии, что вы просто хотите изменить формат) и ffmpeg (который включает параметры транскодирования, когда они необходимы).

Я использую HandBrake , как было предложено в вопросе выше, если загрузка недоступна в формате MP4. (Думаю, я не могу назвать службу, которую использую, так как загрузка не является законной в каждой стране, но поиск по ключевому слову «YIFY» может помочь найти рипы MP4). Кроме того, я использую Subler для добавления SRT без конвертировать MP4 снова и снова .

А затем, чтобы получить метаданные и копию в iTunes , я использую iFlicks , который можно загрузить из App Store .

Subler может получать метаданные непосредственно из iTunes или TV/MovieDB. Зачем добавлять дополнительное программное обеспечение?

Думаю, вы найдете ответы в этих двух постах:

Итак, подводя итог:

ffmpeg -i <input_file>.mkv -f srt -i <input_subtitle>.srt -c:v copy -c:a aac -b:a 384k -c:s mov_text -strict -2 <output_file>.mp4

Попробуйте в пакете ffmpeg . Он может решить если не все, то большую часть проблем.

Пожалуйста, не могли бы вы подробнее рассказать о том, как спрашивающий может использовать ffmegдля выполнения желаемых задач. Существуют ли какие-либо флаги или настройки, которые могут облегчить им начало работы.

Вы можете взглянуть на VideoDrive для Mac. Все это он делает автоматически: www.aroonasoftware.com

У него нет интерфейса командной строки, но есть встроенный таймер, который можно запускать в любое время. И он также совместим с Applescript.

SmartConveter бесплатен в App Store и работает быстрее, чем Handbrake.

Пожалуйста, не могли бы вы рассказать, как SmartConverter может помочь ответить на вопрос. Предлагает ли он интерфейс командной строки, сквозной доступ или другую часть требований?