Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
[De functie die is gekoppeld aan deze pagina, DirectShow, is een verouderde functie. Het is vervangen door MediaPlayer, IMFMediaEngineen Audio/Video Capture in Media Foundation. Deze functies zijn geoptimaliseerd voor Windows 10 en Windows 11. Microsoft raadt ten zeerste aan om nieuwe code te gebruiken MediaPlayer, IMFMediaEngine en Audio/Video Capture in Media Foundation in plaats van DirectShow, indien mogelijk. Microsoft stelt voor dat bestaande code die gebruikmaakt van de verouderde API's, indien mogelijk opnieuw worden geschreven om de nieuwe API's te gebruiken.]
Notitie
Deze API's zijn afgeschaft. Toepassingen moeten gebruikmaken van het Sample Grabber filter of een aangepast filter implementeren om gegevens op te halen uit een DirectShow-filtergrafiek.
Voor het verwerken van multimediagegevens zijn doorgaans veel systeembronnen vereist; Daarom moet u voorkomen dat u waar mogelijk gegevens kopieert. De streamingarchitectuur ondersteunt gedeelde stroomvoorbeelden, een mechanisme waarmee gegevens van de ene stroom naar de andere worden verplaatst zonder deze te kopiëren. Deze buffer maakt het efficiënt transport van gegevens tussen twee streams mogelijk, zelfs als de doelstroom niet specifiek ondersteuning biedt voor de onderliggende gegevensindeling.
Stel dat u een multimediastroom hebt met drie gegevensstromen: video, audio en URL-gegevens die zijn voorzien van een tijdstempel dat overeenkomt met de videoinhoud. U wilt een toepassing schrijven die een copyrightmelding toevoegt aan elk videoframe en de gegevens naar een andere stroom schrijft voor opslag, maar uw toepassing begrijpt geen gegevensindelingen behalve de videostream. Voor de videostream maakt u een voorbeeld dat is gekoppeld aan het gewenste DirectDraw-oppervlak. Vervolgens kunt u een uitvoerstroom maken door de methode IDirectDrawMediaStream::CreateSample met die aanwijzer naar hetzelfde oppervlak aan te roepen, of IMediaStream::CreateSharedSample. In beide gevallen delen de invoer- en uitvoerstromen het DirectDraw-oppervlak. Omdat u de video-indeling begrijpt, hebt u zo nodig toegang tot dit oppervlak.
Als u de andere bronstroomaanwijzers (audio en URL) wilt ophalen, inventariseert u de broncontainerstroom en pakt u de aanwijzers naar de niet-videostreams. Elk van deze bronstreams heeft een gekoppelde uitvoerstroom in de uitvoerstroomcontainer. Haal deze uitvoerpunten op door de methode IMultiMediaStream::GetMediaStream op de uitvoercontainer aan te roepen met elk van de bronstroompointers. In de volgende stappen wordt dit proces beschreven.
- Roep IMultiMediaStream::EnumMediaStreams aan om een aanwijzer op te halen naar een bronstroom. Zorg ervoor dat het niet de videostream is, omdat uw toepassing de indeling al begrijpt.
- Roep IMultiMediaStream::GetMediaStream aan in de uitvoercontainerstroom met de aanwijzer uit stap 1. Hiermee wordt een aanwijzer naar de gewenste uitvoerstroom geretourneerd.
- Roep AllocateSample aan op de bronstroom.
- Roep CreateSharedSample- aan in de uitvoerstroom.
- Roep op de bronstroom de functie Update aan om de gegevens te lezen.
- Roep Update aan in de uitvoerstroom om de gegevens te schrijven.
Herhaal deze stappen voor elke stream waarvan u de indeling niet ondersteunt. Wanneer beide voorbeelden zijn bijgewerkt, bevat de uitvoerstroom alle gegevens uit de bronstroom en bent u klaar.