Interface IMFTranscodeSinkInfoProvider (mfidl.h)
Implémenté par l’objet d’activation du récepteur de transcode.
L’objet d’activation du récepteur de transcode peut être utilisé pour créer l’un des récepteurs de fichiers suivants :
- Récepteur de fichiers 3GP
- Récepteur de fichiers MP3
- Récepteur de fichiers MP4
Héritage
L’interface IMFTranscodeSinkInfoProvider hérite de l’interface IUnknown. IMFTranscodeSinkInfoProvider a également les types de membres suivants :
Méthodes
L’interface IMFTranscodeSinkInfoProvider possède ces méthodes.
IMFTranscodeSinkInfoProvider ::GetSinkInfo Obtient les types de médias pour les flux audio et vidéo spécifiés dans le profil de transcode. |
IMFTranscodeSinkInfoProvider ::SetOutputByteStream Définit un flux d’octets de sortie pour le récepteur multimédia de transcode. |
IMFTranscodeSinkInfoProvider ::SetOutputFile Définit le nom du fichier de sortie encodé. |
IMFTranscodeSinkInfoProvider ::SetProfile Définit le profil de transcodage sur l’objet d’activation du récepteur de transcode. |
Remarques
Pour utiliser cette interface, procédez comme suit :
- Appelez MFCreateTranscodeSinkActivate pour créer l’objet d’activation du récepteur de transcode.
- Interrogez l’objet d’activation pour l’interface IMFTranscodeSinkInfoProvider .
- Appelez MFCreateTranscodeProfile pour créer un profil de transcode.
- Définissez l’attribut MF_TRANSCODE_CONTAINERTYPE sur le profil de transcode. L’attribut doit avoir l’une des valeurs suivantes :
- MFTranscodeContainerType_3GP
- MFTranscodeContainerType_MP3
- MFTranscodeContainerType_MPEG4
- Appelez IMFTranscodeProfile ::SetVideoAttributes et IMFTranscodeProfile ::SetAudioAttributes pour spécifier les formats vidéo et audio.
- Appelez IMFTranscodeSinkInfoProvider ::SetProfile pour définir le profil de transcode.
- Appelez l’une des méthodes suivantes (mais pas les deux) pour spécifier le fichier de sortie :
- Appelez IMFActivate ::ActivateObject sur l’objet d’activation pour créer le récepteur multimédia.
Exemples
// Creates an activation object for the generic transcode sink.
HRESULT CreateTranscodeSinkActivate(
REFGUID guidContainerType,
IMFAttributes *pVideoAttributes,
IMFAttributes *pAudioAttributes,
IMFActivate *pByteStreamActivate,
IMFActivate **ppSinkActivate
)
{
IMFActivate* pSinkActivate = NULL;
IMFTranscodeSinkInfoProvider* pSinkInfoProvider = NULL;
IMFTranscodeProfile* pProfile = NULL;
IMFAttributes* pContainerAttributes = NULL;
HRESULT hr = MFCreateAttributes(&pContainerAttributes, 1);
if (FAILED(hr))
{
goto done;
}
// Create the transcode profile.
hr = MFCreateTranscodeProfile(&pProfile);
if (FAILED(hr))
{
goto done;
}
// Set the profile attributes.
hr = pContainerAttributes->SetGUID(MF_TRANSCODE_CONTAINERTYPE, guidContainerType);
if (FAILED(hr))
{
goto done;
}
hr = pProfile->SetContainerAttributes(pContainerAttributes);
if (FAILED(hr))
{
goto done;
}
if (pVideoAttributes)
{
hr = pProfile->SetVideoAttributes(pVideoAttributes);
if (FAILED(hr))
{
goto done;
}
}
if (pAudioAttributes)
{
hr = pProfile->SetAudioAttributes(pAudioAttributes);
if (FAILED(hr))
{
goto done;
}
}
// Create the transcode sink activation object.
hr = MFCreateTranscodeSinkActivate(&pSinkActivate);
if (FAILED(hr))
{
goto done;
}
hr = pSinkActivate->QueryInterface(IID_PPV_ARGS(&pSinkInfoProvider));
if (FAILED(hr))
{
goto done;
}
// Set the output byte stream.
hr = pSinkInfoProvider->SetOutputByteStream(pByteStreamActivate);
if (FAILED(hr))
{
goto done;
}
// Set the transcode profile.
hr = pSinkInfoProvider->SetProfile(pProfile);
if (FAILED(hr))
{
goto done;
}
// Return the activation object to the caller.
*ppSinkActivate = pSinkActivate;
(*ppSinkActivate)->AddRef();
done:
SafeRelease(&pProfile);
SafeRelease(&pSinkInfoProvider);
SafeRelease(&pSinkActivate);
SafeRelease(&pContainerAttributes);
return hr;
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 7 [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2008 R2 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | mfidl.h |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour