Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[Функция, связанная с этой страницей, DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngineи захватом аудио и видео в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует для нового кода использовать MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, по возможности. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]
В этом разделе приведен шаг 1 руководства воспроизведение звука и видео в DirectShow. Полный код показан в разделе примере воспроизведения DirectShow.
В этом руководстве класс DShowPlayer управляет всеми функциями DirectShow. Этот класс объявлен следующим образом.
#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;
};
Примечания:
- Перечисление
PlaybackStateописывает текущее состояние объектаDShowPlayer. - Константная WM_GRAPH_EVENT определяет частное сообщение окна. Это сообщение используется для уведомления приложения о событиях графа фильтра. См. шаг 6: обработка событий графа.
-
GraphEventFN— это указатель на функцию обратного вызова для обработки событий графа фильтра. Приложение реализует эту функцию обратного вызова. - Переменная члена m_pVideo предоставляет оболочку для различных отрисовщиков видео DirectShow. См. Шаг 2: Объявление CVideoRenderer и производных классов.
- В этом руководстве функция SafeRelease используется для освобождения указателей интерфейса COM.
Далее: Шаг 2: Объявление CVideoRenderer и производных классов.
Связанные разделы