Публикация:
Компьютерра, линк
Когда домашние кинотеатры маячали где-то на горизонте прогресса, а бытовые DVD-плееры только появились и стоили по 500-700 долларов, я очень удивлялся, зачем люди их покупают. Ведь за те же деньги вполне можно было собрать целый компьютер, который мог бы воспроизводить музыку, DVD, кривые пиратские «дивиксы», а кроме того делать еще в тысячу раз больше того, что умели и сейчас умеют делать бытовые проигрыватели. Ответ на этот вопрос печален в своей банальнности: бытовыми плеерами гораздо проще пользоваться. Единственное, что требуется от счастливого покупателся ширпотреба – подключить его к телевизору двумя-тремя проводками, вставить диск и нажать кнопку на пульте. Чтобы сделать видеоплеер из своего домашнего компьютера, придется потрудиться: снизить шум системного блока, поставить операционную систему, плееры, кодеки, купить специальные кабели и соединить выходы звуковой и видео карт с телевизором, докупить пульт ДУ и настроить все это – дело несравнимо более мозгоемкое. Кроме того, компьютер, в отличие от узкоспециализированного устройства, штука капризная, и настроение его может меняться. Хоть безпричинных глюков не бывает, порой сложно понять, с чего вдруг перестали играться видеофайлы. Давайте попробуем проанализировать основные возможные причины возникновения проблем при воспроизведении видео на компьютере под управлением Windows. Если по прочтении вам не удастя установить конкретную причину неисправности, то вы хотя бы сможете определиться, в каком направлении "копать".
Разумеется, прежде чем начинать диагностику, следует выбрать заведомо "не битый" видеофайл, то есть полученный из надежных источников, либо играющийся нормально на других компьютерах. Также следует заранее удостовериться, что проблемы не связаны с нехваткой системных ресурсов. С этой задачей, уверен, читатели «Компьютерры» справятся самостоятельно.
Первая по популярности причина неполадок с воспроизведением видео кроется в неправильном режиме работы CD/DVD-ROM'a. Вместо должного DMA режима, то есть режима прямого обращения к памяти, по тем или иным причинам оптический привод переключается в режим PIO, при котором вся считываемая информация "прогоняется" через CPU, что катастрафически сказывается на его загрузке. Диагностировать это дело очень просто: из Диспетчера Устройств зайдите в свойства вашего IDE-контроллера, где в закладке "Дополнительные параметры" будет указан режим работы каждого из каналов устройства. Если на канале с приводом активен PIO режим, поменяйте его на DMA. Не поможет - обновите драйвер или удалите контроллер из системы, после перезагрузки ОС все может встать на свои места. Если эти очевидные меры не помогают, придется лезть в Сеть с поисковыми запросом "DMA PIO". Эта проблема часто встречается и имеет с десяток причин и методов решений. Если с режимом работы у вашей "читалки" все в порядке, для дальнейшей диагностики лучше все равно скопировать проблемный файл на HDD.
Выполнив предварительную диагностику, переходим к более детальным исследованиям. Абсолютное большинство видеопроигрывателей для Windows используют разработанную Microsoft технологию DirectShow. Ее особенность заключается в том, что видеоплеер никак не заботится о декодировании входного файла: при воспроизведении медиафайлов, поток данных последовательно проходит через цепочку специальных системных библиотек обработки - DirectShow-фильтров, - каждый из которых производит с ним одну узкоспециализированную операцию. Таким образом теоретически процесс декодирования видеофайла никак не должен быть привязан к конкретному ПО, инициализировавшему его запуск. Однако - это только в теории, а на практике популярных видеоплееров очень много, и далеко не все они корректно общаются с DirectShow-интерфейсом, а многие и вовсе игнорируют его, используя свои собственные декодеры. Чтобы во время диагностики исключить возможность влияния плеера, воспользуемся бесплатной утилитой GraphEdit от Microsoft, предназначенной в частности для "низкоуровнего" доступа к DirectShow-фильтрам. Перетягиваем файл-пациент в рабочее поле GraphEdit, после чего возможны целых четыре варианта развития событий.
- Во-первых, файл может открыться в GraphEdit, в результате чего на экране будет построена цепочка прямоугольников-фильтров, а после нажатия треугольной стрелочки (старт рендеринга) в панели инструментов видео начнет проигрываться, причем безо всяких проблем. Не обязательно быть Шерлоком Холмсом, чтобы понять: виновник всех прошлых глюков - ваш программный плеер. Меняйте плеер, или попытайте счастья на сайте его разработчика, возможно уже вышла более стабильная версия.
- Во-вторых, GraphEdit может выругаться сообщением, начинающимся со слов "Could not construct a graph from this file". Несмотря на грозный вид сообщения и пугающий код ошибки, ничего страшного в нем нет. Оно всего лишь означает, что в системе установлены не все декодеры и сплиттеры, требуемые для воспроизведения данного файла. Достаточно скачать из Сети необходимые кодеки, после чего файл должен заиграть. Если вы не знаете, каким кодеком закодирован ваш файл, придется отправиться на разведку. В этот момент важно удержаться от соблазна скачать и установить какой-нибудь многомегабайтный MEGAMAX Codec Pack PLUS (если, конечно, вы этого не сделали еще с самого начала), потому как подобные кодек-пэки, неизвестно кем и как собранные, не столько решают проблемы, сколько создают новые. Чтобы определить формат медиапотоков вашего файла сначала обратите внимание на его расширение (в большинстве случаев расширение однозначно определяет используемый контейнер). Если это .avi, то в нем легко разберутся специальные утилиты: AVIcodec или GSpot . Если это .mkv, .ogm, или .mpg, - поможет VirtualDubMod . Более редкие контейнеры (.mp4, .ts, .264, .rm, .vob и т.д.) обычно определяют и кодеки, которыми внутри сжато аудио и видео, так что весь необходимый для их воспроизведения софт легко находится через Яндекс с Гуглом.
- В-третьих, возможна ситуация, когда файл откроется, цепочка будет построена, но при попытке рендеринга произойдет ошибка или GraphEdit "упадет". Ситуация малоприятная и означает, что цепочка фильтров построена неверно, либо "глючит" одно из ее звеньев. Чтобы решить эту проблему, нужно постоить правильную цепочку фильтров, запуск которой приведет к адекватному воспроизведению файла. Добавлять фильтры можно из меню Graph > Insert Filters > DirectShow Filters, а связыть их в цепочки просто курсором мыши. Ориентируйтесь по скриншотам: на них иллюстрации правильных (Для редких видеокарт (например, Matrox G400) приведенные цепочки несправедливы.) цепочек для основных типов контейнеров. Если нужных декодеров и сплиттеров в системе не обнаружится, их нужно будет скачать и установить, но в любом случае, какой бы файл вы не декодировали, принцип построения цепочек один и тот же. После того, как вы найдете правильную цепочку, результат нужно будет как-то зафиксировать, чтобы любой открываемый файл подобного типа по умолчанию декодировался по правильной цепочке. К сожалению, в Windows нет встроенных средств для управления приоритетами DirectShow-фильтров, так что для этого нужна отдельная утилита, например DirectShow Filter Manager . Будьте очень аккуратны при ее использовании, так как она затрагивает глубинные настройки операционной системы. Слишком резкое изменение приоритетов может привести к совершенно неожиданным результатам.
- В-четвертых, наконец, возможно файл откроется в GraphEdit, цепочка фильтров построится и заработает, однако исходную проблему это не решит. Что ж, продолжаем эксперименты. Следующий шаг - проверка видео других типов. Постарайтесь найти побольше самых разных видеофайлов и проверить их в GraphEdit. Если все остальные типы файлов играются нормально, а глючит только один кодек или контейнер, возвращайтесь к предыдущему абзацу. Ежели выяснится, что глюки никак не связаны с форматом видео - дела плохи, причина лежит на более низком чем DirectShow уровне. Вероятнее всего она связана с воспроизведением декодированной информации видео картой (или аудио в крайне редких случаях). Попробуйте обновить DirectX, переставьте драйверы видеокарты. Проверьте, работает ли overlay-режим воспроизведения видео, поиграйте с другими настройками драйвера, или поищите его более древнюю версию. Как ни странно, в исключительных случаях последняя мера может помочь - как-то мне довелось ставить современную AGP-4X видеокарту на устаревшую материнскую плату на легендарном чипсете i440BX. Система работала абсолютно стабильно в 3D, а при воспроизведении Overlay-видео "вешалась". Проблема решилась установкой драйвера позапрошлого поколения.
Как показывает практика, четвертый вариант развития событий довольно редкое явление, а чаще всего неприятности случаются из-за конфликтов DirectShow-фильтров. И это легко объяснимо – политика Windows позволяет любому приложению устанавливать в систему свои DirectShow-фильтры, никак не иллюстрируя этот процесс и не спрашивая согласия пользователя. К примеру, установив Nero Burning ROM – известную утилиту для записи CD/DVD дисков - можно с удивлением обнаружить, что парк DirectShow-фильтров неожиданно расширился декодерами от Nero, казалось бы, не имеющих никакого отношения к «нарезке » болванок. И этот случай далеко не единичен – многие известнейшие продукты, не имеющие прямого отношения к воспроизведению видео и звука, ведут себя аналогичным образом. Таким образом, на достаточно «навороченном» в софтверном смысле компьютере скапливается весомое количество фильтров от разных производителей, далеко не всегда корректно взаимодействующих друг с другом.
Окончательно запутывают ситуацию уже упоминавшиеся Codec Pack’и, якобы содержащие в одном инсталляционном файле декодеры для всех возможных форматов видео и аудио. Да, действительно, на момент сборки они, возможно, поддерживают большую часть актуальных форматов. Однако последствия одновременной установки такого огромного количества фильтров совершенно непредсказуемы, ведь заранее узнать «подружатся» ли они с текущим набором декодеров данной конкретной системы невозможно. Хорошо еще, если на случай «не подружатся» сборщик Codec Pack’a позаботится о правильной процедуре деинсталляции своего детища, а если нет?
Так что залог видеоздоровья компьютера – установка по отдельности минимума необходимых декодеров. И, дай Бог, эта статья вам не и понадобится.
Оставить комментарий