Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[Функция, связанная с этой страницей, Windows Media Format 11 SDK, является устаревшей. Он был заменен источником чтения и приемником записи . средства чтения источников и записи приемника оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать новый код средства чтения исходного кода и записи приемников вместо пакета SDK для Windows Media 11, когда это возможно. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]
Воспроизведение файлов ASF осуществляется фильтром средства чтения WM ASF . Когда средство чтения WM ASF считывает файл, он автоматически создает выходной пин-код для каждого потока, включая веб-потоки, потоки команд скрипта и любой другой тип произвольного потока. В случае с несколькими файлами с битрейтом пины создаются только для выбранных в данный момент потоков.
Средство чтения WM ASF поддерживает интерфейс DirectShow IMediaSeeking, который позволяет приложениям выполнять временный поиск в файле. Однако воспроизведение на скоростях, отличных от 1.0 (как указано в IMediaSeeking::SetRate) не поддерживается.
Фильтр также предоставляет несколько интерфейсов пакета SDK для формата Windows Media, как описано в следующей таблице.
Интерфейс | Насколько подвергнуто воздействию | Комментарии |
---|---|---|
IWMDRMReader | С помощью IServiceProvider для фильтрации | Предоставляется для приложений, которые должны воспроизводить содержимое, защищенное цифровым управлением правами (DRM). Этот интерфейс также можно использовать для получения других интерфейсов на объекте Reader. |
IWMHeaderInfo | QueryInterface в фильтре | Предоставлено, чтобы приложения могли считывать атрибуты файла и содержимого, а также сведения о маркерах и скриптах и метаданных. |
IWMReaderAdvanced | QueryInterface в фильтре | Частично реализовано в фильтре, чтобы приложения могли получить доступ к информационным методам в объекте WM Reader. |
IWMReaderAdvanced2 | QueryInterface в фильтре | Частичная реализация в фильтре позволяет приложениям получить доступ к информационным методам объекта Reader. |
Фильтр WM ASF Reader был впервые предоставлен в DirectShow 8.0. Версия фильтра, которая поставляется с DirectShow 8.1 и 9.0, поддерживает версию 7.x пакета SDK для формата Windows Media. Последняя версия фильтра, а также другие компоненты QASF, поставляется с пакетом SDK для windows Media Format 9 и более поздних версий, а также заменяет фильтр в DirectX 9.0. Если установить пакет SDK для формата Windows Media после установки DirectX 8.x или 9.x SDK вы перезапишете версию DirectX qasf.dll с версией серии 9. Это не должно представлять никаких проблем, кроме того, возможно, в одном сценарии, где это приведет к различным действиям в методе DirectShow IGraphBuilder::RenderFile. Версия средства чтения WM ASF из пакета SDK для Windows Media Format 9 Series — это фильтр источника по умолчанию для расширений файлов .asf, .wmv и .wma. Это означает, что средство чтения WM ASF автоматически создается и добавляется в граф фильтра диспетчером графов фильтров в таких методах, как IGraphBuilder::RenderFile или IGraphBuilder::AddSourceFilter при указании файла этого типа. В DirectX 9.0 и более ранних версиях и Windows XP с пакетом обновления 1 и более ранних версий метод RenderFile использует старый фильтр источника Windows Media. Это поведение поддерживается для обеспечения обратной совместимости с приложениями, которые использовали проигрыватель Windows Media 6.4. Дополнительные сведения о устаревшем фильтре источников Windows Media см. в документации по пакету SDK DirectShow.
Чтобы воспроизвести ASF-файл с содержимым на основе Windows Media с помощью средства чтения WM ASF, необходимо создать экземпляр диспетчера графов фильтров, вызвать IGraphBuilder::RenderFile, чтобы создать граф, а затем вызвать IMediaControl::Run для воспроизведения файла. В следующем примере кода показана полная программа, которая воспроизводит ASF-файл с помощью DirectShow. Чтобы запустить этот пример, необходимо установить пакет SDK DirectX, а среда сборки должна быть настроена в соответствии с инструкциями в разделе документации по пакету SDK DirectShow "Настройка среды сборки". Кроме того, необходимо указать файл на компьютере в вызове RenderFile.
#include <dshow.h>
#include <stdio.h>
void main(void)
{
IGraphBuilder *pGraph = NULL;
IMediaControl *pControl = NULL;
IMediaEvent *pEvent = NULL;
// Initialize the COM library.
HRESULT hr = CoInitialize(NULL);
if (FAILED(hr))
{
printf("ERROR - Could not initialize COM library");
return;
}
// Create the Filter Graph Manager and query for interfaces.
hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
IID_IGraphBuilder, (void **)&pGraph);
if (FAILED(hr))
{
printf("ERROR - Could not create the Filter Graph Manager.");
return;
}
hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
hr = pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);
// Build the graph. IMPORTANT: Change this string to a file
// on your system.
hr = pGraph->RenderFile(L"test.wmv", NULL);
if (SUCCEEDED(hr))
{
// Run the graph.
hr = pControl->Run();
if (SUCCEEDED(hr))
{
// Wait for completion.
long evCode;
pEvent->WaitForCompletion(INFINITE, &evCode);
// Note: Do not use INFINITE in a real application, because it
// can block indefinitely.
}
}
pControl->Release();
pEvent->Release();
pGraph->Release();
CoUninitialize();
}
Обратите внимание, что код приложения для этого простого примера никогда не ссылается явно на модуль чтения WM ASF. Этот фильтр создается, подключается, запускается и в конечном итоге освобождается диспетчером графов фильтров. Однако во многих сценариях может потребоваться настроить средство чтения WM ASF перед началом воспроизведения.