Bagikan melalui


Fungsi MFCreateASFStreamingMediaSink (wmcontainer.h)

Membuat objek aktivasi untuk sink streaming ASF.

Sink streaming ASF memungkinkan aplikasi menulis paket Advanced Systems Format (ASF) streaming ke aliran byte HTTP.

Sintaks

HRESULT MFCreateASFStreamingMediaSink(
  IMFByteStream *pIByteStream,
  IMFMediaSink  **ppIMediaSink
);

Parameter

pIByteStream

Penunjuk ke objek aliran byte tempat sink media ASF menulis konten yang dialirkan.

ppIMediaSink

Menerima penunjuk ke antarmuka IMFMediaSink dari objek sink media streaming ASF. Untuk membuat sink media, aplikasi harus memanggil IMFActivate::ActivateObject pada pointer yang diterima. Pemanggil harus melepaskan penunjuk antarmuka.

Mengembalikan nilai

Jika fungsi ini berhasil, fungsi akan mengembalikan S_OK. Jika tidak, kode kesalahan HRESULT akan dikembalikan.

Keterangan

Untuk membuat sink streaming ASF dalam proses lain, panggil MFCreateASFStreamingMediaSinkActivate.

Aplikasi bisa mendapatkan penunjuk ke Objek ContentInfo ASF dengan memanggil IUnknown::QueryInterface pada objek sink media yang diterima dalam parameter ppIMediaSink . Objek ContentInfo digunakan untuk mengatur pengaturan konfigurasi encoder, menyediakan properti aliran yang disediakan oleh profil ASF, dan menambahkan informasi metadata. Pengaturan konfigurasi ini mengisi berbagai objek header ASF dari file ASF yang dikodekan. Untuk mengetahui informasi selengkapnya, lihat
Mengatur Properti di Objek ContentInfo.

Contoh

Contoh kode berikut menunjukkan cara membuat sink media untuk sumber ASF. Contoh ini menyalin pengaturan konfigurasi aliran dari sumber ke objek ContentInfo yang mewakili objek header ASF dari file output.

//  Creates an an instance of the ASF streaming sink.

HRESULT CreateASFStreamingSink(
    IMFMediaSource *pSource, 
    IMFByteStream  *pOutputByteStream, 
    IMFMediaSink   **ppMediaSink
    )
{
    IMFPresentationDescriptor* pSourcePD = NULL;
    IMFASFProfile* pASFProfile = NULL;;
    IMFMediaSink* pMediaSink = NULL;
    IMFASFContentInfo* pASFContentInfo = NULL;

    // Create the streaming media sink for the ASF file
    HRESULT hr = MFCreateASFStreamingMediaSink(pOutputByteStream, &pMediaSink);
    if (FAILED(hr))
    {
        goto done;
    }

    //
    // Transfer the ASF profile from the media source to the sink.
    //

    // Get the presentation descriptor from the source.
    hr = pSource->CreatePresentationDescriptor(&pSourcePD);
    if (FAILED(hr))
    {
        goto done;
    }

    // Convert the presentation descriptor to an ASF profile.
    hr = MFCreateASFProfileFromPresentationDescriptor(pSourcePD, &pASFProfile);
    if (FAILED(hr))
    {
        goto done;
    }

    hr = pMediaSink->QueryInterface(IID_PPV_ARGS(&pASFContentInfo));
    if (FAILED(hr))
    {
        goto done;
    }

    // Set the profile on the sink.
    hr = pASFContentInfo->SetProfile(pASFProfile);
    if (FAILED(hr))
    {
        goto done;
    }

    *ppMediaSink = pMediaSink;
    (*ppMediaSink)->AddRef();

done:
    SafeRelease(&pSourcePD);
    SafeRelease(&pASFProfile);
    SafeRelease(&pASFContentInfo);
    SafeRelease(&pMediaSink);
    return hr;
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 7 [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 R2 [hanya aplikasi desktop]
Target Platform Windows
Header wmcontainer.h
Pustaka Mf.lib
DLL Mf.dll

Lihat juga

MFCreateASFStreamingMediaSinkActivate

Fungsi Media Foundation