DirectShow

DirectShow
Логотип DirectX Media SDK — первый раз DirectShow распространялся под этим именем.

DirectShow (иногда DS, или DShow; кодовое название Quartz) — мультимедийный фреймворк и интерфейс программирования приложений (API), выпущенный корпорацией Microsoft для разработчиков программного обеспечения и позволяющий Windows-приложениям управлять широким спектром устройств аудио/видео ввода/вывода, включая DV- и веб-камеры, DVD-устройства, ТВ-тюнеры и др.

Поддерживает также различные форматы файлов, от WAV и AVI до Windows Media. Является заменой более ранней технологии Microsoft — Video for Windows.[1] Основан на Microsoft Windows Component Object Model (COM), DirectShow предоставляет общий интерфейс работы с мультимедиа поддерживаемый большинством языков программирования. Кроме того, DirectShow расширяем и позволяет поддерживать устройства, форматы и компоненты обработки сторонних производителей. Средства разработчика и документация ранее распространялись как часть DirectX SDK, в настоящее время они распространяются совместно с Platform SDK, которая в свою очередь входит в состав Windows SDK.[2] В будущем Microsoft планирует замену DirectShow на Media Foundation.

Содержание

История

В начале 1990-х годов после выхода релиза Windows 3.1 на рынке США появился ряд цифровых видеоустройств (известных сейчас как веб-камеры). Обычно эти устройства подключались через параллельный порт (LPT-порт принтера). Со временем, эти устройства становились популярнее, и корпорация Microsoft решила разработать технологию по работе с мультимедиа данными для разработчиков. Эта технология получила название Video for Windows (VFW). Но с самого своего рождения у VFW был огромный недостаток — сложность работы с MPEG-видео.[1]

Перед выходом Windows 95 корпорация Microsoft стартовала новый проект ActiveMovie[3] (кодовое название Quartz) для поддержки MPEG, 32-битной архитектуры и потоковой передачи видео/аудио данных. Новый проект характерен тем, что в нём использовались новые разработки корпорации Microsoft, а именно Component Object Model (COM). Только в Quartz принято объекты называть фильтрами, которые как блоки конструктора LEGO объединяются в граф-фильтр. Благодаря архитектуре COM, отдельный фильтр является самодостаточным объектом, который может быть создан сторонним разработчиком для своих нужд (например: для поддержания функциональности своего устройства).

В 1997 году корпорация Microsoft интегрирует ActiveMovie в DirectX и меняет название на DirectShow.[4][5] В 1998 году в стандартную поставку DirectShow включается поддержка DVD. В 2000 году добавляются функции редактирования потоков данных и интеграция DirectShow в DirectX окончательно завершается. Теперь разработчики могут захваченное видео проецировать в своих трёхмерных сценах. В релизе DirectX 9 в DirectShow добавлена возможность объединения видео потоков в один для микширования видео.[6]

В октябре 2004, DirectShow удаляется из официальной поставки DirectX и переносится к дополнениям DirectX. В апреле 2005, DirectShow полностью удаляется из официальных поставок DirectX и перемещается в Windows Server 2003 SP1 версию Microsoft Platform SDK.[2] Тем не менее для компиляции некоторых примеров из документации всё ещё требуется DirectX SDK.[7] А вот уже с выходом Windows Vista и документация начинает поставляться совместно с Windows SDK.[2]

Возможности

Хорошим примером возможностей DirectShow — может служить приложение Windows Movie Maker. Большинство сторонних приложений для редактирования мультимедиа данных под операционную систему Windows так же использует DirectShow.[6] Так как фильтры DirectShow разделены на три типа, соответственно и возможности DirectShow можно классифицировать соответствующим образом.

Фильтры захвата — предназначены для ввода мультимедиа данных в поток программы с различных физических устройств. В роли устройства могут быть как различного рода видео устройства (портативные видео камеры, веб-камеры, TV-тюнеры), так и аудио устройства (микрофон, модемная линия), а также данные могут быть получены и из файла (AVI, MPEG, MP3). DirectShow позволяет одновременно использовать несколько фильтров захвата, например: для одновременного захвата видео с веб-камеры и звука с микрофона. Количество одновременно используемых фильтров захвата ограничено лишь мощностью используемого компьютера.

Пример графа-фильтров для воспроизведения AVI файла

Фильтры преобразования — предназначены для обработки поступающих данных из потока программы и последующей отправки преобразованных данных назад в поток к следующему типу фильтров. Этот тип фильтров может производить анализ данных, может полностью манипулировать аудиовидеоданными для создания сложных визуальных эффектов, или, просто объединять (или разъединять) аудио и видео каналы. В стандартной поставке вместе с операционной системой Windows корпорация Microsoft предоставляет небольшое количество готовых фильтров: кодеки (MPEG-1, MP3, WMA, WMV, MIDI), контейнеры (AVI, ASF, WAV), несколько сплитеров (или демультиплексоров) и мультиплексоров.[8] Другие же популярные фильтры: кодеки (MPEG-4, AAC, H.264, Vorbis) и контейнеры (Ogg, .mov, MP4) устанавливаются с различными сторонними программами.

Фильтры визуализации (рендеринга) — предназначены для вывода данных из потока в стандартное физическое устройство вывода, например, на монитор, на звуковую карту или в файл. По аналогии с фильтрами захвата фильтров визуализации также может быть несколько, например, для одновременного отображения видео на экране и записи этого же видео в файл.

Структурная схема

Структурная схема DirectShow

Критика

Сложность

Воспроизведение обычного видеофайла довольно простая задача для реализации при помощи DirectShow. Написание же программы, с использованием всех механизмов DirectShow (например, реализация своего фильтра любого типа) является довольно сложной задачей и требует хороших навыков.[9][10][11]

Разработчики редко создают DirectShow-фильтры «с нуля», чаще, они используют базовые классы. Эти классы обычно позволяют упростить разработку, позволяя программисту обойти некоторые задачи. Однако, процесс может остаться довольно сложным, потому как количество кода в базовых классах примерно соответствует половине объёма библиотеки MFC. А количество объектов, основанных на базовых классах, ошеломляет многих разработчиков. Причём, в некоторых случаях, DirectShow API отличается от обычных правил COM объектов, особенно это заметно в параметрах методов. Для обхода этих сложностей разработчики часто используют более высокий уровень: Windows Media Player SDK, который основан на ActiveX объекте и использует обычные правила COM.

Codec hell

Codec hell (термин, возникший по аналогии DLL hell) — это конфликт, возникающий между различными фильтрами, которые пытаются выполнить одну и ту же задачу. Дело в том, что, сейчас, большое количество компаний производят кодеки в форме DirectShow фильтров, которые частенько выполняют схожие задачи с одинаковым типом медиа.[12][13]

Инструменты, которые могут помочь в борьбе с Codec Hell:

  • GSpot Codec Information Appliance[14], GSpot помогает определить, какой кодек подходит для визуализации AVI-файла или другого контейнера;
  • GraphEdit, позволяет определить набор фильтров, которые DirectShow использует для воспроизведения медиа файлов;
  • «вручную», то есть граф фильтров строится заранее проверенными фильтрами.

См. также

Примечания

  1. 1 2 Core Media Technology in Windows XP Empowers You to Create Custom Audio/Video Processing Components. MSDN Magazine. Microsoft (июль 2002). Архивировано из первоисточника 13 марта 2012. Проверено 28 мая 2008.
  2. 1 2 3 DirectShow documentation. MSDN. Microsoft. Архивировано из первоисточника 13 марта 2012. Проверено 28 мая 2008.
  3. Microsoft Announces ActiveMovie. Microsoft (5 марта 1996). Архивировано из первоисточника 13 марта 2012. Проверено 28 мая 2008.
  4. Microsoft Unveils First Unified Multimedia API Strategy. Microsoft (31 марта 1997). Архивировано из первоисточника 13 марта 2012. Проверено 28 мая 2008.
  5. Microsoft and Progressive Networks Collaborate on Streaming Media. Microsoft (21 июля 1997). Архивировано из первоисточника 13 марта 2012. Проверено 28 мая 2008.
  6. 1 2 Mark D. Pesce. Sample Chapter // Programming Microsoft DirectShow for Digital Video and Television. — Microsoft Press, 2003. — ISBN 0-7356-1821-6
  7. DirectShow FAQ. MSDN. Microsoft. Архивировано из первоисточника 13 марта 2012. Проверено 28 мая 2008.
  8. Formats supported by default in DirectShow. MSDN. Microsoft. Архивировано из первоисточника 13 марта 2012. Проверено 30 мая 2008.
  9. Using DirectShow with Media Center Edition (05 января 2006). Архивировано из первоисточника 13 марта 2012. Проверено 22 января 2012.
  10. The Basics to using DirectShow (13 марта 2001). Архивировано из первоисточника 13 марта 2012. Проверено 22 января 2012.
  11. LEAD Technologies: DirectShow defined. Архивировано из первоисточника 13 марта 2012. Проверено 22 января 2012.
  12. Codec Hell: Home Video 101 blog.  ??? (???). Архивировано из первоисточника 13 марта 2012. Проверено 16 июня 2008.
  13. Codec’s = New Age DLL Hell? Hell Yes — Chris Lanier’s Blog.  ??? (???). Архивировано из первоисточника 13 марта 2012. Проверено 16 июня 2008.
  14. The GSpot Codec Information Appliance. Архивировано из первоисточника 13 марта 2012. Проверено 22 января 2012.

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "DirectShow" в других словарях:

  • DirectShow — DirectShow,   DirectX …   Universal-Lexikon

  • DirectShow — Logo of the DirectX Media SDK – the first time DirectShow was distributed under its current name.[citation needed] DirectShow (sometimes abbreviated as DS or DShow), codename Quartz, is a multimedia framework and API produced by Microsoft for… …   Wikipedia

  • DirectShow — Microsoft DirectX Entwickler: Microsoft Corporation Aktuelle Version: 10.1 (März 2009 Build) …   Deutsch Wikipedia

  • DirectShow — DirectX DirectX Développeur Microsoft Dernière version 11 (le …   Wikipédia en Français

  • Media Foundation — Microsoft Media Foundation (MF) is a COM based multimedia framework pipeline and infrastructure platform for digital media in Windows Vista, Windows 7 Windows 8. It is the intended replacement for Microsoft DirectShow, Windows Media SDK, DirectX… …   Wikipedia

  • DirectX Media Objects — (DMOs) are COM based multimedia and data streaming components. In some respects, DMOs are similar to DirectShow filters. Like DirectShow filters, DMOs take input data and use it to produce output data. As the APIs for DMOs are much simpler than… …   Wikipedia

  • Media Foundation — (сокращается до MF)  мультимедийный фреймворк и интерфейс программирования приложений нового поколения, созданный корпорацией Microsoft для работы с цифровым мультимедиа под операционными системами семейства Windows, начиная с Vista.… …   Википедия

  • DirectDraw — Microsoft DirectX Entwickler: Microsoft Corporation Aktuelle Version: 10.1 (März 2009 Build) …   Deutsch Wikipedia

  • DirectInput — Microsoft DirectX Entwickler: Microsoft Corporation Aktuelle Version: 10.1 (März 2009 Build) …   Deutsch Wikipedia

  • DirectMusic — Microsoft DirectX Entwickler: Microsoft Corporation Aktuelle Version: 10.1 (März 2009 Build) …   Deutsch Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»