Эквивалент Mac OS X для DirectShow, GraphEdit

Новичок в Mac OS X, знаком с Windows. В Windows есть DirectShow, большое количество встроенных фильтров, COM-программирование и GraphEdit для очень быстрого прототипирования и отслеживания графов, которые вы построили в коде.

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

Я видел несколько слабых предложений использовать gstreamer или какую-то библиотеку для QT, но я не могу заставить себя поверить, что это путь Apple. И я наткнулся на некоторую документацию по QuickTime, но я не собираюсь делать переходы, спрайты, трансляции,...

Обучение мозгу в DirectShow означает, что я даже не знаю, как Apple думает о предоставлении DirectShow-подобной функциональности. Это означает, что я не знаю правильных ключевых слов и даже не знаю, где искать. Книги? Купил несколько. Теперь я мог бы написать некоторый код, который может редактировать свадебное видео вашей сестры (если я не могу добиться приличного прогресса в этой теме, я, возможно, затем буду спрашивать, что это будет стоить для вас), но для определения, какие фильтры доступны и как связать их вместе... ничего. Предложения?

1 ответ

На данный момент обработка видео переживает огромный переход на Mac. QuickTime очень старый, но в то же время большой и мощный, поэтому в течение последних 5 лет он проходил процесс постепенной замены.

Тем не менее, QTKit - это подмножество QuickTime (захват, воспроизведение, преобразование формата и базовое редактирование видео), которое поддерживается в будущем. Устаревшие API-интерфейсы QuickTime все еще существуют на данный момент и, вероятно, останутся, по крайней мере, до тех пор, пока его основные функции не станут доступны в другом месте, но будут 32-битными. Для некоторых вовлеченных видео вещей вам может понадобиться использовать его в некоторых местах.

На данный момент iOS опережает Mac, потому что она может начаться с нуля с AVFoundation. Будущее медиа-фреймворков для Mac, вероятно, будет либо напрямую основано на AVFoundation (QTKit - это облегченная оболочка сверху), либо на расширении QTKit, которое выглядит очень похоже.

Для аудио есть Core Audio, который есть на Mac и iOS и не уйдет в ближайшее время. Это довольно мощный, но местами несколько тупой. К счастью, онлайн-поддержка очень хорошая; список рассылки является важным ресурсом.

Для фильтров и обработки на уровне кадра у вас есть Core Video, как кто-то еще упомянул, а также Core Image. Для движущейся графики есть Quartz Composer, который включает в себя графический редактор и архитектуру плагинов для добавления собственных патчей. Для программной процедурной анимации и простого смешивания моделей рендеринга (OpenGL, Quartz, видео и т. Д.) Есть Core Animation.

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


Чтобы ответить на ваш комментарий ниже:

В QuickTime (и QTKit) отдельные типы данных, такие как аудио и видео, представлены в виде дорожек. Может быть не сразу понятно, что QuickTime может открывать аудио, а также форматы видеофайлов. Обычный способ объединить аудио и видео:

  1. Создать QTMovie с вашим видео файлом
  2. Создать QTMovie с вашим аудиофайлом.
  3. Возьмите QTTrack объект, представляющий аудио и добавить его к QTMovie с видео в нем.
  4. Выровняйте фильм, чтобы он не просто содержал ссылку на другой фильм, но фактически содержал аудиоданные.
  5. Запишите фильм на диск.

Вот пример из Blender. Вы увидите, как осуществляется мультиплексирование аудио / видео в end_qtфункция. Там также есть некоторое использование Core Audio там (AudioConverter*). (Там есть некоторый классический код экспорта QuickTime в quicktime_export.c но это не похоже на звук.)

Другие вопросы по тегам