Partager via


Utilisation de flux multimédias dans les applications

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

Notes

Ces API sont déconseillées. Les applications doivent utiliser le filtre Sample Grabber ou implémenter un filtre personnalisé pour obtenir des données à partir d’un graphique de filtre DirectShow.

 

Les interfaces de diffusion en continu multimédia simplifient considérablement le processus de manipulation des données multimédias en supprimant la dépendance vis-à-vis des caractéristiques spécifiques de la source matérielle ou logicielle et en fournissant la prise en charge de tous les formats multimédias Microsoft DirectX®. Les flux extrayent les données à un niveau très élevé ; les applications peuvent même déplacer des données d’un flux à un autre sans connaître le format des données.

Effectuez les étapes suivantes pour créer un flux multimédia.

  1. Créez le flux multimédia. La méthode de création et d’initialisation du flux est spécifique à l’architecture. DirectShow prend en charge l’interface IAMMultiMediaStream , qui est utilisée pour initialiser le flux. D’autres implémentations serveur in-process d’IMultiMediaStream seront créées et initialisées à l’aide de différents mécanismes.
  2. Une fois l’objet de flux multimédia initialisé, l’application utilise QueryInterface pour récupérer l’interface IMultiMediaStream de l’objet. Utilisez cette interface pour déterminer les propriétés du flux et énumérer les flux eux-mêmes. Vous pouvez récupérer un flux spécifique en appelant la méthode IMultiMediaStream::GetMediaStream avec un ID d’objectif spécifique. MSPID_PrimaryVideo et MSPID_PrimaryAudio, qui représentent les flux vidéo et audio principaux, sont les ID d’usage les plus couramment utilisés.
  3. Appelez IUnknown::QueryInterface pour une interface spécifique au type de média du flux. Si vous souhaitez afficher un flux vidéo, par exemple, récupérez son interface IDirectDrawMediaStream . Les interfaces spécifiques aux médias définissent des méthodes supplémentaires nécessaires pour tirer pleinement parti des fonctionnalités d’un format.
  4. Créez un ou plusieurs exemples à partir des données de flux. Chaque flux multimédia prend en charge la méthode IMediaStream::CreateSharedSample pour la création d’exemples. L’exemple résultant prend en charge l’interface IStreamSample , qui permet de contrôler l’exemple et ses caractéristiques. En règle générale, le flux multimédia prend en charge une méthode de création d’exemples spécifique au format qui est plus puissante que les méthodes IStreamSample mentionnées ci-dessus. IDirectDrawMediaStream, par exemple, peut créer des exemples attachés à une surface DirectDraw souhaitée et à un rectangle de découpage. Toutefois, dans certaines situations, vous devez gérer les données sans connaître leur format de données. Si vous souhaitez diffuser en continu des données indépendamment de leur format, utilisez la méthode IMediaStream::CreateSharedSample pour créer les exemples de données.
  5. Après avoir créé tous les exemples de flux souhaités, démarrez le flux en appelant la méthode IMultiMediaStream::SetState et transmettez l’indicateur STREAMSTATE_RUN comme paramètre.
  6. Appelez IStreamSample::Update pour mettre à jour l’exemple de flux. Lorsque la méthode IStreamSample::Update se ferme, vous pouvez accéder aux données de l’exemple. Si vous souhaitez déclencher un événement ou un appel de fonction spécifique lorsque la mise à jour est retournée, transmettez les pointeurs appropriés à la méthode IStreamSample::Update .

Pour plus d’informations sur les interfaces de streaming multimédia, consultez Streaming multimédia.