2011-04-08 20 views
6

Nuevo para Mac OS X, familiar con Windows. Windows tiene DirectShow, una buena cantidad de filtros incorporados, programación COM y GraphEdit para crear prototipos muy rápidos y husmear en los gráficos que ha construido en el código.Mac OS X equivalente para DirectShow, GraphEdit

Ahora estoy a punto de ir a la Mac para trabajar con cámaras, cámaras web, micrófonos, espacios de color, archivos, división, de sincronización, de representación, lectura de archivos, almacenamiento de archivos, y muchas de las cosas que he venido a tomar por supuesto con DirecShow al armar aplicaciones para presentaciones en vivo. En el lado de Mac, hasta ahora he encontrado ... ¡nada! O no sé dónde buscar o me está costando mucho ajustar la reputación de la Mac por su facilidad de manejo de los medios con una capacidad programática coherente para entrar allí y empezar a jugar con la manipulación de los medios de comunicación.

He visto algunas sugerencias débiles para usar gstreamer o alguna biblioteca para QT, pero no me atrevo a creer que este sea el camino de Apple para llevar. Y me he encontrado con cierta documentación de QuickTime pero no estoy buscando hacer transiciones, sprites, radiodifusión, ...

Tener un cerebro entrenado en DirectShow significa que ni siquiera sé cómo piensa Apple en proporcionar DirectShow- como la funcionalidad Eso significa que no conozco las palabras clave adecuadas y ni siquiera sé dónde buscarlas. ¿Libros? Comprado algunos. Ahora podría escribir algún código que pueda editar el video de la boda de su hermana (si no puedo avanzar decente en este tema, me pregunto qué valdrá para ti), pero para identificar qué filtros hay disponibles. y cómo unirlos ... nada. Sugerencias?

+0

Creo que es QuickTime. QT es lo que subyace [el capó en iTunes.] (Http://developer.apple.com/quicktime/) Echa un vistazo a este código de muestra para [reproducción de video a pantalla completa]. (Http://developer.apple.com/ library/mac/# samplecode/MyMediaPlayer/Introduction/Intro.html) –

+1

¡No! Me equivoco. Pruebe [Core Video] (http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Conceptual/CoreVideo/CVProg_Intro/CVProg_Intro.html) que menciona los filtros. –

+0

Gracias por los consejos. Mi mirada inicial en Core Video puede haberme equivocado. Parecía decir que era bueno para extraer un fotograma del video, no la dirección en la que estaba ingresando. –

Respuesta

10

El manejo de video está pasando por una gran transición en la Mac en este momento. QuickTime es muy antiguo, pero también grande y potente, por lo que ha estado en proceso de reemplazo incremental durante los últimos 5 años aproximadamente.

Dicho esto, QTKit es el subconjunto QuickTime (captura, reproducción, conversión de formato y edición de video básica) que es compatible en el futuro. Las API heredadas de QuickTime todavía están ahí por el momento, y probablemente se mantendrán al menos hasta que sus funciones principales estén disponibles en otros sitios, pero solo son de 32 bits. Para algunas cosas de video involucradas, puede que necesites usarlo en algunos lugares.

Por el momento, iOS está por delante de la Mac, ya que podría comenzar desde cero con AV Foundation. El futuro de los frameworks de medios de Mac probablemente sea AV Foundation directamente (con QTKit siendo una cuña liviana en la parte superior) o una extensión de QTKit que se ve muy similar.

Para audio, hay Core Audio que está en Mac e iOS y no va a desaparecer en el corto plazo. Es bastante poderoso pero algo obtuso en algunos lugares. Afortunadamente, el soporte en línea es muy bueno; el mailing list es un recurso esencial.

Para los filtros y el procesamiento a nivel de marco tiene Core Video como otra persona mencionada, así como Core Image. Para los gráficos en movimiento hay Quartz Composer que incluye un editor gráfico y una arquitectura de complemento para agregar sus propios parches. Para la animación de procedimientos programáticos y mezclar fácilmente los modelos de representación (OpenGL, Quartz, video, etc.) hay Core Animation.

Además de todo esto, por supuesto, no hay ninguna razón por la que no pueda usar librerías de código abierto donde las cosas incorporadas no hacen lo que usted desea.


Para hacer frente a su comentario a continuación:

En QuickTime (y QTKit), tipos de datos individuales como el audio y el vídeo se representan como pistas.Es posible que no quede inmediatamente claro que QuickTime puede abrir el audio y los formatos de archivo de video. Una forma común de combinar audio y video sería:

  1. Cree un archivo QTMovie con su archivo de video.
  2. Crea un QTMovie con tu archivo de audio.
  3. Tome el objeto QTTrack que representa el audio y agréguelo al QTMovie con el video.
  4. Allanar la película, por lo que no contiene simplemente una referencia a la otra película, pero en realidad contiene los datos de audio.
  5. Escribe la película en el disco.

Here's an example from Blender. Verá cómo se realiza el multiplexado A/V en la función end_qt. También hay algún uso de Core Audio allí (AudioConverter*). (Hay algún código clásico de exportación de QuickTime en quicktime_export.c, pero no parece hacer audio.)

+0

Primero, gracias por tanta información exhaustiva. Todavía estoy tratando de entenderlo. Dejar de lado por el momento que una tecnología está tomando el lugar de la otra. Parece que hay tantas piezas móviles, tantas áreas distintas a las que hay que prestarle atención. De esta manera, la filosofía parece muy diferente a DirectShow. ¿Dónde buscaría si quisiera procesar algo de audio, procesar algunos videos, unirme a ellos y asegurarme de que se sincronizaron en función del tiempo de captura? Eso es obvio en DirectShow. Con este tipo de organización en el lado de Mac, superficialmente parece una ocurrencia tardía –

+0

Por favor, vea mi respuesta editada ... mi respuesta fue demasiado larga para un comentario. –