Compartir a través de


Uso de secuencias multimedia en aplicaciones

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

Nota:

Estas API están en desuso. Las aplicaciones deben usar el filtro Sample Grabber o implementar un filtro personalizado para obtener datos de un gráfico de filtros DirectShow.

 

Las interfaces de streaming multimedia simplifican en gran medida el proceso de manipulación de datos multimedia mediante la eliminación de la dependencia de características específicas del hardware o el origen de software y proporcionando compatibilidad con todos los formatos multimedia de Microsoft DirectX®. Los flujos abstraen los datos a un nivel muy alto; Las aplicaciones incluso pueden mover datos de un flujo a otro sin saber nada sobre el formato de los datos.

Realice los pasos siguientes para crear una secuencia multimedia.

  1. Cree la secuencia multimedia. El método de creación e inicialización de la secuencia es específico de la arquitectura. DirectShow admite la interfaz IAMMultiMediaStream , que se usa para inicializar la secuencia. Otras implementaciones de servidor en proceso de IMultiMediaStream se crearán e inicializarán con distintos mecanismos.
  2. Una vez inicializado el objeto de secuencia multimedia, la aplicación usará QueryInterface para recuperar la interfaz IMultiMediaStream del objeto. Use esta interfaz para determinar las propiedades de la secuencia y enumerar los propios flujos. Puede recuperar una secuencia específica llamando al método IMultiMediaStream::GetMediaStream con un identificador de propósito específico. MSPID_PrimaryVideo y MSPID_PrimaryAudio, que representan las secuencias de audio y vídeo principales, son los identificadores de propósito más usados.
  3. Llame a IUnknown::QueryInterface para obtener una interfaz específica del tipo de medio de la secuencia. Si desea representar una secuencia de vídeo, por ejemplo, recupere su interfaz IDirectDrawMediaStream . Las interfaces específicas de medios definen métodos adicionales necesarios para aprovechar al máximo las funcionalidades de un formato.
  4. Cree uno o varios ejemplos a partir de los datos de flujo. Cada secuencia multimedia admite el método IMediaStream::CreateSharedSample para la creación de muestras. El ejemplo resultante admite la interfaz IStreamSample , que proporciona control sobre la muestra y sus características. Normalmente, la secuencia multimedia admite un método específico del formato de creación de muestras que es más eficaz que los métodos de IStreamSample mencionados anteriormente. IDirectDrawMediaStream, por ejemplo, puede crear muestras adjuntas a una superficie de DirectDraw deseada y recortar rectángulo. Sin embargo, en algunas situaciones, debe controlar los datos sin conocer su formato de datos. Si desea transmitir datos independientemente de su formato, use el método IMediaStream::CreateSharedSample para crear los ejemplos de datos.
  5. Después de crear todos los ejemplos de secuencia deseados, inicie la secuencia llamando al método IMultiMediaStream::SetState y pase la marca STREAMSTATE_RUN como su parámetro.
  6. Llame a IStreamSample::Update para actualizar el ejemplo de secuencia. Cuando se cierra el método IStreamSample::Update , puede acceder a los datos del ejemplo. Si desea que se desencadene un evento o una llamada de función específicos cuando se devuelva la actualización, pase los punteros adecuados al método IStreamSample::Update .

Para obtener más información sobre las interfaces de streaming multimedia, consulta Streaming multimedia.