Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
[A laphoz társított funkció, DirectShowegy régi funkció. Ezt felváltotta a MediaPlayer, a IMFMediaEngineés a Audio/Video Capture in Media Foundation. Ezek a funkciók Windows 10-hez és Windows 11-hez lettek optimalizálva. A Microsoft határozottan javasolja, hogy az új kód lehetőség szerint a MediaPlayer-t, a IMFMediaEngine-t és a Audio/Video Capture-t a Media Foundation keretein belül használja a DirectShowhelyett. A Microsoft javasolja, hogy az örökölt API-kat használó meglévő kódot át kell írni az új API-k használatára, ha lehetséges.]
Ez a témakör a DirectShow hang- és videolejátszási oktatóanyagának 1. lépése. A teljes kód DirectShow lejátszási példacímű témakörben látható.
Ebben az oktatóanyagban az osztály kezeli az DShowPlayer
összes DirectShow-funkciót. Ez az osztály a következőképpen deklarálva van.
#include <new>
#include <windows.h>
#include <dshow.h>
enum PlaybackState
{
STATE_NO_GRAPH,
STATE_RUNNING,
STATE_PAUSED,
STATE_STOPPED,
};
const UINT WM_GRAPH_EVENT = WM_APP + 1;
typedef void (CALLBACK *GraphEventFN)(HWND hwnd, long eventCode, LONG_PTR param1, LONG_PTR param2);
class DShowPlayer
{
public:
DShowPlayer(HWND hwnd);
~DShowPlayer();
PlaybackState State() const { return m_state; }
HRESULT OpenFile(PCWSTR pszFileName);
HRESULT Play();
HRESULT Pause();
HRESULT Stop();
BOOL HasVideo() const;
HRESULT UpdateVideoWindow(const LPRECT prc);
HRESULT Repaint(HDC hdc);
HRESULT DisplayModeChanged();
HRESULT HandleGraphEvent(GraphEventFN pfnOnGraphEvent);
private:
HRESULT InitializeGraph();
void TearDownGraph();
HRESULT CreateVideoRenderer();
HRESULT RenderStreams(IBaseFilter *pSource);
PlaybackState m_state;
HWND m_hwnd; // Video window. This window also receives graph events.
IGraphBuilder *m_pGraph;
IMediaControl *m_pControl;
IMediaEventEx *m_pEvent;
CVideoRenderer *m_pVideo;
};
Megjegyzések:
- A(z)
PlaybackState
felsorolás a(z)DShowPlayer
objektum aktuális állapotát írja le. - Az állandó WM_GRAPH_EVENT egy privát ablaküzenetet határoz meg. Ez az üzenet arra szolgál, hogy értesítse az alkalmazást a szűrőgráf eseményeiről. Lásd : 6. lépés: Gráfesemények kezelése.
-
GraphEventFN
a szűrőgráfesemények kezelésére szolgáló visszahívási függvényre mutató mutató. Az alkalmazás implementálja ezt a visszahívási függvényt. - A m_pVideo tagváltozó burkolót biztosít a különböző DirectShow videómegjelenítőkhöz. Lásd : 2. lépés: CVideoRenderer és származtatott osztályok deklarálása.
- Az oktatóanyag során a SafeRelease függvény a COM-felület mutatóinak kiadására szolgál.
Következő: 2. lépés: CVideoRenderer és származtatott osztályok deklarálása.
Kapcsolódó témakörök