Partager via


Utilisation de l’API Transcode

Cette rubrique a décrit comment utiliser l’API de transcode pour encoder un fichier multimédia.

Vue d’ensemble

Avant d’utiliser l’API de transcode, l’application doit disposer des informations suivantes :

  • Chemin d’accès ou URL d’un fichier multimédia existant qui sera réencodé.
  • Le nom du fichier de sortie.
  • Type de conteneur pour le fichier de sortie, tel que MP4 ou AsF (Advanced Streaming Format).
  • Le format d'encodage. Ces informations incluent les types de médias qui décrivent les flux audio et vidéo encodés.

Pour utiliser l’API de transcode, une application effectue les étapes suivantes.

  1. Créez une source multimédia pour lire le fichier source.
  2. Créez un profil de transcode. Ajoutez des attributs qui décrivent le flux audio, le flux vidéo et le conteneur de fichiers.
  3. Utilisez le profil de transcode pour créer une topologie d’encodage. (Pour plus d’informations sur les topologies, consultez À propos des topologies.)
  4. Définissez la topologie sur la session multimédia.
  5. Démarrez la session multimédia et attendez l’événement MESessionEnded .

Le reste de cette rubrique décrit ces étapes plus en détail.

Création d’une source multimédia

Une source multimédia est un objet qui lit et analyse le fichier source. Pour créer une source multimédia, utilisez le programme de résolution de source. Vous trouverez un exemple de code dans la rubrique Utilisation du programme de résolution de source.

Création d’un profil de transcode

Un profil de transcode décrit le format et les paramètres utilisés pour encoder le fichier de sortie. Le profil de transcode contient trois ensembles d’attributs :

  • Attributs audio : décrivez le format audio cible et les paramètres de l’encodeur audio.
  • Attributs vidéo : décrire le format vidéo cible et les paramètres de l’encodeur vidéo.
  • Attributs de conteneur : définissez le type de conteneur de fichiers, ainsi que certains paramètres d’encodage globaux.

Pour créer un profil de transcode, appelez la fonction MFCreateTranscodeProfile . Cette fonction retourne un pointeur vers l’interface IMFTranscodeProfile . L’objet de profil initial est vide ; il ne contient aucun attribut. L’étape suivante consiste à ajouter les attributs qui définissent le profil.

Attributs audio

Pour ajouter des attributs pour le flux audio, appelez IMFTranscodeProfile::SetAudioAttributes. Ces attributs spécifient la façon dont le flux audio est encodé. Si le fichier de sortie ne contient pas de flux audio, omettez ces attributs.

Les attributs audio se répartissent en deux catégories :

  • Attributs qui spécifient le format du flux encodé
  • Attributs qui spécifient d’autres paramètres d’encodage.

Les attributs de format sont simplement des attributs de type média, comme décrit dans la section Types de médias audio. L’ensemble exact des attributs de format dépend de l’encodeur. (Consultez Formats multimédias pris en charge dans Media Foundation.) Voici une liste d’attributs de format audio classiques :

Attribut format Description
MF_MT_SUBTYPE Sous-type. Consultez GUID de sous-type audio.
MF_MT_AUDIO_NUM_CHANNELS Nombre de canaux audio.
MF_MT_AUDIO_SAMPLES_PER_SECOND Nombre d’échantillons audio par seconde.
MF_MT_AUDIO_BLOCK_ALIGNMENT Alignement des blocs.
MF_MT_AUDIO_AVG_BYTES_PER_SECOND Nombre moyen d’octets par seconde (débit binaire codé).

 

Les paramètres d’encodage suivants sont définis.

Paramètre d’encodage Description
MF_TRANSCODE_DONOT_INSERT_ENCODER Empêche l’API de transcoder l’insertion d’un encodeur pour le flux audio.
MF_TRANSCODE_ENCODINGPROFILE Spécifie le modèle de conformité de l’appareil. (S’applique uniquement aux fichiers ASF.)
MF_TRANSCODE_QUALITYVSSPEED Spécifie le compromis entre la qualité d’encodage et la vitesse.

 

Vous devez définir les attributs de format. Les paramètres d’encodage sont facultatifs.

Une façon de trouver un format compatible avec l’encodeur consiste à appeler la fonction MFTranscodeGetAudioOutputAvailableTypes . L’encodeur souhaité est spécifié par le sous-type. La fonction retourne une collection de types de médias pour cet encodeur. Vous pouvez sélectionner un type dans la liste et copier les attributs dans le profil. Pour obtenir un exemple de code qui utilise cette approche, consultez Tutoriel : Encodage d’un fichier WMA.

Attributs vidéo

Pour ajouter des attributs pour le flux vidéo, appelez IMFTranscodeProfile::SetVideoAttributes. Ces attributs spécifient la façon dont le flux vidéo est encodé. Si le fichier de sortie ne contient pas de flux vidéo, omettez ces attributs.

Comme avec les attributs audio, les attributs vidéo se répartissent en deux catégories :

  • Attributs qui spécifient le format du flux encodé
  • Attributs qui spécifient d’autres paramètres d’encodage.

Les attributs de format sont des attributs de type média, comme décrit dans la section Types de médias vidéo. Voici une liste d’attributs de format vidéo classiques :

Attribut format Description
MF_MT_SUBTYPE Sous-type. Consultez GUID de sous-type de vidéo.
MF_MT_FRAME_RATE Fréquence d’images.
MF_MT_FRAME_SIZE Taille du cadre.
MF_MT_AVG_BITRATE Débit binaire moyen.
MF_MT_PIXEL_ASPECT_RATIO Rapport d’aspect en pixels.

 

Les paramètres d’encodage suivants sont définis.

Paramètre d’encodage Description
MF_TRANSCODE_DONOT_INSERT_ENCODER Empêche l’API de transcode d’insérer un encodeur pour le flux vidéo.
MF_TRANSCODE_ENCODINGPROFILE Spécifie le modèle de conformité de l’appareil. (S’applique uniquement aux fichiers ASF.)
MF_TRANSCODE_QUALITYVSSPEED Spécifie le compromis entre la qualité d’encodage et la vitesse.

 

Vous devez définir les attributs de format. Les paramètres d’encodage sont facultatifs.

Attributs de conteneur

Les attributs de conteneur définissent les caractéristiques au niveau du fichier de sortie. Pour définir des attributs de conteneur, appelez IMFTranscodeProfile::SetContainerAttributes. Les attributs suivants sont définis.

Attribut Description
MF_TRANSCODE_ADJUST_PROFILE Définit les paramètres de flux à utiliser pour la topologie de transcode. Vous pouvez définir les indicateurs pour utiliser les paramètres de la source d’entrée ou utiliser des attributs de flux de données personnalisés.
MF_TRANSCODE_CONTAINERTYPE Spécifie le format de fichier du fichier de sortie, tel que MP4 ou ASF. Sur la base de cette valeur, le récepteur multimédia approprié est ajouté à la topologie.
MF_TRANSCODE_SKIP_METADATA_TRANSFER Spécifie si les métadonnées de la source sont copiées dans le fichier de sortie.
MF_TRANSCODE_TOPOLOGYMODE Spécifie si les codecs basés sur le matériel peuvent être utilisés pendant le transcodage.
MFT_FIELDOFUSE_UNLOCK_Attribute Déverrouille un codec qui a des restrictions de champ d’utilisation. Pour plus d’informations, consultez Restrictions de champ d’utilisation.

 

L’attribut MF_TRANSCODE_CONTAINERTYPE est requis. Les autres attributs de conteneur sont facultatifs.

Création d’une topologie de transcode

La topologie de transcode est une topologie partielle qui contient la source multimédia, les codecs appropriés et le récepteur multimédia. Pour créer la topologie de transcode, appelez la fonction MFCreateTranscodeTopology . Cette fonction prend les paramètres suivants en entrée :

  • Pointeur vers l’interface IMFMediaSource de la source multimédia.
  • Le nom du fichier de sortie.
  • Pointeur vers l’interface IMFTranscodeProfile du profil de transcode.

La fonction retourne un pointeur vers l’interface IMFTopology .

Exécution de la session d’encodage

Après avoir créé la topologie, vous êtes prêt à encoder le fichier. Vous pouvez ignorer le profil à ce stade.

  1. Appelez MFCreateMediaSession pour créer la session multimédia.
  2. Appelez IMFMediaSession::SetTopology pour définir la topologie sur la session multimédia.
  3. Appelez IMFMediaSession::Start pour démarrer la session d’encodage.
  4. Attendez l’événement MESessionEnded .
  5. Appelez IMFMediaSession::Fermer pour fermer la session multimédia.
  6. Attendez l’événement MESessionClosed .
  7. Appelez IMFMediaSource::Shutdown.
  8. Appelez IMFMediaSession::Shutdown.

La majeure partie du temps consacré à l’encodage se produit entre les étapes 3 et 4.

Transcode API

À propos de la session multimédia