Эквивалент Mac OS X для DirectShow, GraphEdit - PullRequest
6 голосов
/ 08 апреля 2011

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

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

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

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

1 Ответ

10 голосов
/ 09 апреля 2011

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

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

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

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

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

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


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

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

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

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

...