Bagikan melalui


Pemutaran Aliran Web ASF di DirectShow

[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Tangkapan 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 Audio/Video Capture 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.]

Microsoft DirectShow mendukung aliran web dalam skenario pemutaran file melalui filter Pembaca WM ASF , tetapi Anda harus menulis filter DirectShow Anda sendiri untuk mengambil dan mempertahankan aliran.

Catatan

Untuk memutar kembali aliran web dalam konten yang sedang dialirkan dari server yang menjalankan Windows Media Services, gunakan kontrol ActiveX® Seri Pemutar Media Windows 9 yang disematkan di halaman web.

 

Ketika diberikan file yang berisi aliran jenis WMMEDIATYPE_FileTransfer, Pembaca WM ASF akan membuat pin output untuk file tersebut. Blok format akan menjadi struktur WMT_WEBSTREAM_FORMAT . (Struktur ini didokumenkan dalam dokumentasi Windows Media Format SDK.) Jika tidak ada filter hilir yang tersedia yang dapat menangani jenis media tersebut, maka pin akan tetap tidak terhubung, tetapi file akan tetap memutar aliran audio dan/atau video.

Setiap sampel media dalam aliran web berisi struktur WMT_WEBSTREAM_SAMPLE_HEADER , yang didokumenkan dalam dokumentasi Windows Media Format SDK. Struktur memiliki panjang variabel tergantung pada panjang anggota wszURL-nya . Penunjuk ke data sampel awalnya menunjuk ke struktur ini, dan Anda harus memajukan penunjuk melewati struktur untuk mengakses data aktual dalam aliran.

Filter handler aliran web Anda harus didasarkan pada kelas CBaseRenderer . Dalam metode CBaseRenderer::D oRenderSample , filter perlu mengurai struktur untuk informasi tentang aliran web, lalu melakukan tindakan yang sesuai. Biasanya, ini akan melibatkan penyimpanan file ke disk, lalu memanggil fungsi CreateUrlCacheEntry dan CommitUrlCacheEntryW atau CommitUrlCacheEntryA untuk menempatkan file ke dalam cache Internet Explorer. Filter harus menangani file multipihak, yaitu file yang lebih besar dari satu sampel, dan juga harus menangani perintah render, yang ditentukan oleh anggota WMT_WEBSTREAM_SAMPLE_HEADER.wSampleType . Filter mengirimkan peristiwa EC_OLE_EVENT ke aplikasi, bersama dengan teks string WMT_WEBSTREAM_SAMPLE_HEADER.wszURL yang berisi nama file yang akan dirender. Aplikasi kemudian menyebabkan browser menampilkan halaman yang ditentukan. Jika aliran web telah ditulis dengan benar, file seharusnya sudah berada di cache.

Untuk informasi selengkapnya tentang WMT_WEBSTREAM_FORMAT dan WMT_WEBSTREAM_SAMPLE_HEADER, lihat dokumentasi Windows Media Format SDK.

Membaca File ASF di DirectShow