Bagikan melalui


Mempratinjau Proyek

[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Pengambilan Audio/Video di Media Foundation. Fitur-fitur tersebut telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer, IMFMediaEngine dan Pengambilan Audio/Video di Media Foundation alih-alih DirectShow, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

[API ini tidak didukung dan mungkin diubah atau tidak tersedia di masa mendatang.]

Untuk mempratinjau proyek, pertama-tama panggil CoCreateInstance untuk membuat instans Mesin Render Dasar. Pengidentifikasi kelas adalah CLSID_RenderEngine. Kemudian panggil metodeIRenderEngine::SetTimelineObject untuk menentukan garis waktu yang Anda render.

Pertama kali Anda mempratinjau garis waktu, lakukan panggilan berikut dalam urutan yang tercantum:

  1. Panggil IRenderEngine::SetRenderRange untuk menentukan bagian garis waktu mana yang akan dipratinjau. (Opsional)
  2. Panggil IRenderEngine::ConnectFrontEnd untuk membangun ujung depan grafik.
  3. Panggil IRenderEngine::RenderOutputPins. Metode ini menghubungkan setiap pin output ke perender video atau perender audio, menyelesaikan grafik.

Contoh kode berikut menunjukkan langkah-langkah berikut:

IRenderEngine *pRender = NULL; 
hr = CoCreateInstance(CLSID_RenderEngine, NULL, 
    CLSCTX_INPROC_SERVER, IID_IRenderEngine, (void**)&pRender);

hr = pRender->SetTimelineObject(pTL);
hr = pRender->ConnectFrontEnd();
hr = pRender->RenderOutputPins();

Sekarang jalankan grafik filter. Pertama, panggil metode IRenderEngine::GetFilterGraph untuk mendapatkan penunjuk ke antarmuka Manajer Filter Graph IGraphBuilder. Kemudian kueri Filter Graph Manager untuk antarmukaIMediaControldan panggil IMediaControl::Run, seperti yang ditunjukkan dalam kode berikut:

IGraphBuilder   *pGraph = NULL;
IMediaControl   *pControl = NULL;
hr = pRender->GetFilterGraph(&pGraph);
hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
hr = pControl->Run();

Gunakan antarmuka Filter Graph Manager's IMediaEventEx untuk menunggu pratinjau selesai. Anda juga dapat mencari grafik menggunakan antarmuka IMediaSeeking Filter Graph Manager, seperti yang Anda lakukan dengan grafik pemutaran file.

Untuk mempratinjau proyek lagi, cari grafik kembali ke nol waktu dan panggil Jalankan lagi. Jika Anda mengubah konten garis waktu, lakukan hal berikut:

  1. Panggil SetRenderRange. (Opsional)
  2. Panggil ConnectFrontEnd.
  3. Jika metode ConnectFrontEnd mengembalikan S_WARN_OUTPUTRESET, panggil RenderOutputPins. (Jika ConnectFrontEnd mengembalikan S_OK, Anda dapat melewati langkah ini.)
  4. Kembalikan grafik ke waktu nol.
  5. Jalankan grafik.

Contoh berikut menunjukkan langkah-langkah berikut:

hr = pRender->ConnectFrontEnd();
if (hr == S_WARN_OUTPUTRESET)
{
    hr = pRender->RenderOutputPins();
}
LONGLONG llStart = 0; 
hr = pSeek->SetPositions(&llStart, AM_SEEKING_AbsolutePositioning, 0, 0); 
hr = pControl->Run();

Untuk contoh lengkap yang memuat dan mempratinjau file proyek, lihat Memuat dan Mempratinjau Proyek.

Mengelola Proyek Pengeditan Video

Perenderan Proyek