Utilisation de l’API de transcodage
Cette rubrique explique comment utiliser l’API de transcodage pour encoder un fichier multimédia.
- Vue d'ensemble
- Création d’une source de média
- Création d’un profil de transcodage
- Création d’une topologie de transcodage
- Exécution de la session d’encodage
- Rubriques connexes
Vue d’ensemble
Avant d’utiliser l’API de transcodage, l’application doit disposer des informations suivantes :
- Le chemin d’accès ou l’URL d’un fichier multimédia existant qui sera à nouveau codé.
- Nom du fichier de sortie.
- Type de conteneur pour le fichier de sortie, tel que MP4 ou le format de streaming avancé (ASF).
- 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 transcodage, une application effectue les étapes suivantes.
- Créer une source de média pour lire le fichier source.
- Créez un profil de transcodage. Ajoutez des attributs qui décrivent le flux audio, le flux vidéo et le conteneur de fichiers.
- Utilisez le profil de transcodage pour créer une topologie d’encodage. (Pour plus d’informations sur les topologies, consultez à propos des topologies.)
- Définissez la topologie sur la session multimédia.
- 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 de média
Une source de média est un objet qui lit et analyse le fichier source. Pour créer une source de média, utilisez le programme de résolution source. Vous pouvez trouver un exemple de code dans la rubrique à l’aide du programme de résolution source.
Création d’un profil de transcodage
Un profil de transcodage décrit le format et les paramètres utilisés pour encoder le fichier de sortie. Le profil de transcodage contient trois ensembles d’attributs :
- Attributs audio : décrivent le format audio cible et les paramètres de l’encodeur audio.
- Attributs vidéo : décrivent 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 globaux d’encodage.
Pour créer un profil de transcodage, 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édia audio. Le jeu d’attributs de format exact dépend de l’encodeur. (Consultez formats multimédias pris en charge dans Media Foundation.) Voici une liste d’attributs de format audio typiques :
| Attribut de format | Description |
|---|---|
| _sous- _ type MF MT | Sous-type. Consultez GUID de sous-type audio. |
| _canaux de _ _ numéros audio MF MT _ | Nombre de canaux audio. |
| _ _ échantillons audio MF _ MT _ par _ seconde | Nombre d’échantillons audio par seconde. |
| _alignement de _ _ bloc audio MF MT _ | Alignement du bloc. |
| _octets de _ données audio MF MT- _ _ octets _ par _ seconde | Nombre moyen d’octets par seconde (vitesse de transmission encodée). |
Les paramètres d’encodage suivants sont définis.
| Paramètre d’encodage | Description |
|---|---|
| _ _ _ encodeur d’insertion ne de transcodage MF _ | Empêche l’API de transcodage d’insérer un encodeur pour le flux audio. |
| _ENCODINGPROFILE de transcodage MF _ | Spécifie le modèle de conformité de périphérique. (S’applique uniquement aux fichiers ASF.) |
| _QUALITYVSSPEED de transcodage MF _ | Spécifie le compromis entre la qualité et la vitesse du codage. |
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 Didacticiel : 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 de la 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édia vidéo. Voici une liste d’attributs de format vidéo classiques :
| Attribut de format | Description |
|---|---|
| _sous- _ type MF MT | Sous-type. Consultez GUID de sous-type de vidéo. |
| _fréquence d' _ images MF MF _ | Fréquence d’images. |
| _taille de _ trame MF MF _ | Taille du frame. |
| _vitesse de _ _ transmission moy. MF | Vitesse de transmission moyenne. |
| _ _ _ rapport hauteur/largeur des pixels _ MF | Proportions de pixels. |
Les paramètres d’encodage suivants sont définis.
| Paramètre d’encodage | Description |
|---|---|
| _ _ _ encodeur d’insertion ne de transcodage MF _ | Empêche l’API de transcodage d’insérer un encodeur pour le flux vidéo. |
| _ENCODINGPROFILE de transcodage MF _ | Spécifie le modèle de conformité de périphérique. (S’applique uniquement aux fichiers ASF.) |
| _QUALITYVSSPEED de transcodage MF _ | Spécifie le compromis entre la qualité et la vitesse du codage. |
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 de niveau fichier du fichier de sortie. Pour définir des attributs de conteneur, appelez IMFTranscodeProfile :: SetContainerAttributes. Les attributs suivants sont définis.
| Attribut | Description |
|---|---|
| _profil d’ajustement de transcodage MF _ _ | Définit les paramètres de flux à utiliser pour la topologie de transcodage. Vous pouvez définir les indicateurs pour utiliser les paramètres de la source d’entrée ou utiliser des attributs de flux personnalisés. |
| _CONTAINERTYPE de transcodage MF _ | 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. |
| _transfert de _ _ métadonnées d’omission de transcodage MF _ | Spécifie si les métadonnées de la source sont copiées dans le fichier de sortie. |
| _TOPOLOGYMODE de transcodage MF _ | Spécifie si les codecs basés sur le matériel peuvent être utilisés lors du transcodage. |
| _Attribut de _ déverrouillage MFT FIELDOFUSE _ | Déverrouille un codec qui a des restrictions de champ d’utilisation. Pour plus d’informations, consultez restrictions relatives au champ d’utilisation. |
L' attribut _ _ CONTAINERTYPE de transcodage MF est requis. Les autres attributs de conteneur sont facultatifs.
Création d’une topologie de transcodage
La topologie de transcodage est une topologie partielle qui contient la source du média, les codecs appropriés et le récepteur multimédia. Pour créer la topologie de transcodage, appelez la fonction MFCreateTranscodeTopology . Cette fonction accepte les paramètres suivants comme entrée :
- Pointeur vers l’interface IMFMediaSource de la source du média.
- Nom du fichier de sortie.
- Pointeur vers l’interface IMFTranscodeProfile du profil de transcodage.
La fonction retourne un pointeur vers l’interface IMFTopology .
Exécution de la session d’encodage
Une fois la topologie créée, vous êtes prêt à encoder le fichier. Vous pouvez ignorer le profil à ce stade.
- Appelez MFCreateMediaSession pour créer la session multimédia.
- Appelez IMFMediaSession :: SetTopology pour définir la topologie sur la session multimédia.
- Appelez IMFMediaSession :: Start pour démarrer la session d’encodage.
- Attendez l’événement MESessionEnded .
- Appelez IMFMediaSession :: Close pour fermer la session multimédia.
- Attendez l’événement MESessionClosed .
- Appelez IMFMediaSource :: Shutdown.
- Appelez IMFMediaSession :: Shutdown.
La majeure partie du temps passé à l’encodage se produit entre les étapes 3 et 4.