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 |