Création du récepteur de fichiers ASF
Le récepteur de fichiers ASF est une implémentation de IMFMediaSink fournie par Media Foundation qu’une application peut utiliser pour archiver des données de média ASF dans un fichier. Pour plus d’informations sur le modèle objet et l’utilisation générale des récepteurs de média ASF, consultez récepteurs de média ASF.
Il existe deux façons de créer une instance du récepteur de fichiers ASF. Vous pouvez appeler MFCreateASFMediaSink ou MFCreateASFMediaSinkActivate.
Si vous appelez MFCreateASFMediaSink, vous devez spécifier un flux d’octets, pour le fichier de sortie, dans lequel le récepteur écrira le contenu ASF pendant une session d’encodage. Le flux d’octets spécifié doit avoir des fonctionnalités pouvant être recherchées et accessibles en écriture, sinon l’appel MFCreateASFMediaSink échoue avec le _ code d’erreur E Fail. Cet appel crée un objet récepteur de fichiers in-process et retourne un pointeur vers l’interface IMFMediaSink du récepteur de fichiers.
Si vous appelez MFCreateASFMediaSinkActivate, vous devez spécifier l’URL du fichier de sortie dans lequel le récepteur de fichiers écrira les données multimédias. Dans ce cas, le récepteur de fichiers crée en interne le flux d’octets. La fonction retourne un pointeur vers l’interface IMFActivate du récepteur de fichiers. À
Pensez à MFCreateASFMediaSinkActivate au lieu de MFCreateASFMediaSink, lorsque votre topologie d’encodage est conçue comme suit :
La topologie d’encodage est pour le chemin d’accès du média protégé (PMP) et le récepteur de fichiers est utilisé hors processus.
Le nœud de sortie de la topologie est créé à l’aide du pointeur retourné vers l’objet Activate du récepteur de fichiers et votre application effectue le suivi des flux dans le récepteur de fichiers par numéros de flux.
Notes
Vous pouvez activer le récepteur de fichiers en appelant IMFActivate :: ActivateObject. Toutefois, vous n’avez pas besoin d’activer l’objet de façon explicitement. La session multimédia effectue le suivi de l’objet d’activation et active le récepteur de fichiers automatiquement pendant la session d’encodage.
Les informations de flux de données sont configurées dans l’objet ContentInfo. Disucssed dans la sous-section suivante.
Une fois le récepteur de fichiers ASF créé, il doit être configuré avant de générer la topologie. Le récepteur de fichiers doit connaître les informations suivantes afin de générer le fichier de sortie.
- Informations de base sur le flux
- Informations sur le mode d’encodage
- Métadonnées
Le récepteur de fichiers implémente l' objet ASF ContentInfo et expose l’interface IMFASFContentInfo afin qu’une application puisse l’utiliser pour définir les informations relatives aux flux et à l’encodage. Selon la fonction que vous avez appelée pour créer le récepteur de fichiers, il existe deux façons d’obtenir une référence à l’interface IMFASFContentInfo .
- Si vous appelez la fonction MFCreateASFMediaSink , l’application doit interroger l’interface IMFASFContentInfo en appelant IMFMediaSink :: QueryInterface sur le récepteur de fichiers retourné.
- Si vous choisissez d’appeler MFCreateASFMediaSinkActivate, cette fonction s’attend à ce que vous disposiez d’un objet ContentInfo entièrement configuré avant l’appel. Pour ce faire, vous devez créer un objet ContentInfo vide en appelant MFCreateASFContentInfo , puis le configurer avec toutes les informations requises. Transmettez l’objet ContentInfo configuré à MFCreateASFMediaSinkActivate pour recevoir un pointeur vers l’objet récepteur Activate. Vous ne pouvez pas activer le récepteur de fichiers en utilisant l’objet d’activation retourné, puis modifier les informations de flux ou d’encodage.
Pour plus d’informations sur la configuration des flux de récepteurs et des propriétés spécifiques, consultez les rubriques suivantes :
- Ajout d’informations de flux au récepteur de fichiers ASF
- Définition des propriétés dans le récepteur de fichiers
- Ajout de métadonnées au récepteur de fichiers