Agregue soporte a QuickTime para hardware de entrada de video personalizado

I have a custom hardware device sending a video stream.

How can make this stream available to a QuickTime application ?

Long story: On Windows, I create a DirectShow filter, so any DirectShow-compatible application can stream from my device. I'd like to do the same on Mac OS X. I guess QuickTime is the way to go, but I can't find the accurate answer on the apple developer web site.

preguntado el 08 de noviembre de 11 a las 11:11

I believe what you're looking for is the CoreMedia.framework introduced in 10.7 Lion and iOS4. More details here along with API and samples - developer.apple.com/library/IOs/#documentation/AudioVideo/…. -

@SaurabhG: Which parts of that are relevant to someone implementing support for a device, rather than application usage of a device? -

And the corresponding guide for OSX - developer.apple.com/library/mac/#documentation/AudioVideo/… Please comment if this helps! -

@SaurabhG: This question is about implementing support for a device. -

@PeterHosey: That does make it somewhat dicey to answer the question, since there really is no good documentation on writing device drivers for the new (or even old, QTKit) AVFoundation framework. That said, I would suggest looking around in the CoreMediaIO framework. There's absolutely zero public documentation, though. If you have a Mac developer program subscription, you can find some sample code for writing a Lion user space video capture driver using CoreMediaIO.framework in this forum thread - devforums.apple.com/message/530074 At this point, I think it's best to contact ADC. -

2 Respuestas

With Mac OS 10.7 Apple made the CoreMediaIO.framework público.
CoreMediaIO is a device abstraction layer (DAL) for multimedia hardware. It replaces the traditional QuickTime VDIG component API.
No hay a small section about this framework in the "Media Layer" chapter of the Mac OS X Technology Overview.

Unfortunately CoreMediaIO isn't showing up in Apple's documentation yet, but it has some very detailed header files.
They are located in:

/System/Library/Frameworks/CoreMediaIO.framework/Headers

CMIOHardware seems to be a good starting point (from the "Overview" section in the header):

The CoreMediaIO device abstraction layer (DAL) provides an abstraction through which applications can access media hardware. To do this, the DAL provides a small set of objects that provide access to the various pieces of the system. The base class for all CoreMediaIO objects is the class CMIOObject. Other important classes include CMIOSystemObject, CMIODevice, CMIOStream, and CMIOControl.


If you have to support older versions of OS X, you could also take a look at what the Developer Library has to offer.
VDIG Components are deprecated and 32bit-only.

Respondido el 02 de enero de 12 a las 13:01

hope you check out Transmisión en vivo HTTP

Respondido el 02 de enero de 12 a las 01:01

How does that help add support in QuickTime for a new kind of video input device? - Peter Hosey

Hey, Peter, when you mention video stream, is the device send out stream over network? or it's just a capture device? - Allen

I didn't mention video streams. As far as I can tell, the question is asking about adding support for a custom device that's meant to be plugged in locally, not a stream source on the network. Even if it is networked, that doesn't necessarily mean it's an HTTP server or that the questioner can modify its content to support HTTP Live Streaming. - Peter Hosey

in the original question, it is a device sending a video stream. Peter, what is your question? without knowing what kind data source it is, how could we determine the solution? if the device is plugged in locally, then is is a device driver issue, better check out macam project at webcam-osx.sourceforge.net - Allen

You're asking questions of me that it would be better to ask of the questioner. And yes, I know the question says “device sending a video stream”, but it doesn't say it's sending it over a network and other elements of the question imply that it is not necessarily a stream in the network sense. - Peter Hosey

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.