Mengambil File DV Tipe-2
[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Perekaman 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.]
File AVI DV tipe-2 memiliki dua aliran, satu yang berisi video DV dan yang lain yang berisi audio. Untuk mengambil file tipe-2 saat mempratinjau, gunakan grafik filter yang diperlihatkan dalam diagram berikut.
Grafik ini hampir sama dengan grafik untuk pengambilan tipe-1 (lihat Mengambil File DV Tipe-1). Namun, aliran pengambilan melewati filter DV Splitter sebelum mencapai filter AVI Mux. Oleh karena itu, AVI Mux menerima dua aliran, aliran audio, dan aliran video yang dikodekan DV.
Bangun grafik ini sebagai berikut:
ICaptureGraphBuilder2 *pBuilder; // Capture graph builder.
IBaseFilter *pDV; // DV capture filter (MSDV)
IBaseFilter *pAviMux // Avi Mux filter.
IBaseFilter *pDVSplit; // DV Splitter
// Initialize pDV (not shown).
// Create and initialize the Capture Graph Builder (not shown).
// Create the DV Splitter and add it to the filter graph.
hr = CoCreateInstance(CLSID_DVSplitter, 0, CLSCTX_INPROC_SERVER,
IID_IBaseFilter, reinterpret_cast<void**>)(&pDVSplit));
hr = pGraph->AddFilter(pDVSplit, L"DV Splitter");
// Create the file-writing section of the graph.
hr = pBuilder->SetOutputFileName(&MEDIASUBTYPE_Avi,
OLESTR("C:\\Example2.avi"), &pAviMux, 0);
// Connect the capture pin to the DV Splitter, and render one stream from
// the DV Splitter to the AVI Mux.
hr = pBuilder->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Interleaved,
pDV, pDVSplit, pAviMux);
// Render the other stream from the DV splitter to the AVI Mux.
hr = pBuilder->RenderStream(0, 0, pDVSplit, 0, pAviMux);
// Render the preview stream.
hr = pBuilder->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Interleaved,
pDV, 0, 0);
// Remember to release all interfaces.
- Buat Pemisah DV dan tambahkan ke grafik filter.
- Panggil ICaptureGraphBuilder2::SetOutputFileName untuk menyambungkan filter AVI Mux ke filter Penulis File.
- Panggil ICaptureGraphBuilder2::RenderStream untuk menyambungkan filter pengambilan MSDV ke Pemisah DV. Panggilan ini juga menghubungkan salah satu pin output DV Splitter ke AVI Mux.
- Panggil RenderStream lagi untuk menyambungkan pin DV Splitter lainnya ke AVI Mux.
- Panggil RenderStream untuk merender aliran pratinjau untuk ketiga kalinya. Lewati langkah ini jika tidak ingin mempratinjau video.
Topik terkait