Архивы: по дате | по разделам | по авторам

Видеоремонт

АрхивВидео
автор : Филипп Казаков   02.06.2006

Проанализируем главные причины возникновения проблем при воспроизведении видео на компьютере под управлением Windows и обсудим способы устранения этих проблем.

Когда домашние кинотеатры маячили где-то на горизонте, а бытовые DVD-плееры только-только появились и стоили по 500-700 долларов, я очень удивлялся, зачем люди их покупают. Ведь за те же деньги можно собрать компьютер, который воспроизводит музыку, DVD, кривые пиратские "дивиксы" да ещё и делает в тысячу раз больше, чем умели и сейчас умеют бытовые проигрыватели. Ответ на этот вопрос печален в своей банальности: бытовыми плеерами гораздо проще пользоваться (Всё не настолько однозначно - хороший бытовой плеер может обеспечивать на порядок более высокое качество видео и звука, чем самый навороченный компьютер - прим. "Терралаб").

Единственное, что требуется от счастливого покупателя ширпотреба, - подключить его к телевизору двумя-тремя проводками, вставить диск и нажать кнопку на пульте. А вот чтобы сделать видеоплеер из своего домашнего компьютера, придется потрудиться: снизить шум системного блока, поставить операционную систему, плееры, кодеки, купить специальные кабели и соединить выходы звуковой и видеокарты с телевизором, докупить пульт ДУ и, наконец, настроить всё это хозяйство. Дело, прямо скажем, гораздо более мозгоёмкое.

Кроме того, компьютер, в отличие от узкоспециализированного устройства, штука капризная, и настроение его может меняться. Хоть беспричинных глюков не бывает, порой трудно понять, с чего вдруг перестали играться видеофайлы. Давайте попробуем проанализировать главные причины возникновения проблем при воспроизведении видео на компьютере под управлением Windows. Даже если эта статья не поможет вам локализовать неисправность, вы, по крайней мере, будете знать, в каком направлении "рыть землю".

Разумеется, прежде чем начинать диагностику, следует выбрать заведомо "не битый" видеофайл, то есть полученный из надёжных источников либо нормально воспроизводящийся на других компьютерах. Следует также заранее удостовериться, что проблемы не связаны с нехваткой системных ресурсов. С этой задачей, уверен, читатели справятся самостоятельно.

Первая по распространённости причина неполадок с воспроизведением видео кроется в неправильном режиме работы привода CD/DVD-ROM. Вместо DMA, то есть режима прямого обращения к памяти, оптический привод почему-то переключается в режим PIO, при котором вся считываемая информация прогоняется через процессор, что катастрофически сказывается на его загрузке. Диагностировать это очень просто: из Диспетчера устройств зайдите в свойства вашего IDE-контроллера, где в закладке "Дополнительные параметры" указан режим работы каждого из каналов устройства. Если на канале с приводом активен PIO-режим, поменяйте его на DMA. Не поможет - обновите драйвер или удалите контроллер из системы: после перезагрузки ОС всё может встать на свои места. Если эти очевидные меры не помогают, придётся лезть в Сеть с поисковым запросом "DMA PIO". Эта проблема имеет с десяток причин и методов решений. Если с режимом работы у вашей "читалки" все о’кей, для дальнейшей диагностики лучше всё равно скопировать проблемный файл на винчестер.

Выполнив предварительную диагностику, переходим к детальным исследованиям. Абсолютное большинство видеопроигрывателей для Windows используют разработанную Microsoft технологию DirectShow. Её особенность заключается в том, что видеоплеер не заботится о декодировании входного файла: при воспроизведении медиафайлов поток данных последовательно проходит через цепочку специальных системных библиотек обработки - DirectShow-фильтров, - каждый из которых производит с ним одну узкоспециализированную операцию. Таким образом, теоретически процесс декодирования видеофайла не должен быть привязан к конкретному ПО, инициализировавшему его запуск. Однако это только в теории, а на практике популярных видеоплееров очень много, и далеко не все они корректно общаются с DirectShow-интерфейсом, а многие и вовсе игнорируют его, используя свои собственные декодеры. Чтобы во время диагностики исключить возможность влияния плеера, воспользуемся бесплатной утилитой GraphEdit от Microsoft, предназначенной, в частности, для "низкоуровнего" доступа к DirectShow-фильтрам.

Перетягиваем файл-пациент в рабочее поле GraphEdit. Далее возможны четыре варианта развития событий.

1. Файл открывается в GraphEdit, в результате чего на экране строится цепочка прямоугольников-фильтров, а после нажатия треугольной стрелочки в панели инструментов (старт рендеринга) видео проигрывается безо всяких проблем. Не обязательно быть Шерлоком Холмсом, чтобы понять: виновник всех прошлых глюков - ваш программный плеер. Меняйте плеер или попытайте счастья на сайте его разработчика: возможно, уже вышла более стабильная версия.

2. 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 и др.) обычно определяют и кодеки, которыми внутри сжато аудио и видео, так что софт, необходимый для воспроизведения файлов такого типа, легко находится через Яндекс с Гуглом.

3. Файл открылся, цепочка построена, но при попытке рендеринга происходит ошибка или падает GraphEdit. Эта малоприятная ситуация означает, что либо цепочка фильтров построена неверно, либо глючит одно из её звеньев. Чтобы решить эту проблему, нужно построить правильную цепочку фильтров, запуск которой приведёт к корректному воспроизведению файла. Добавлять фильтры можно из меню Graph > Insert Filters > DirectShow Filters, а связывать их в цепочки - курсором мыши. Если нужных декодеров и сплиттеров в системе не обнаружится, их придется скачать и установить, но в любом случае, какой бы файл вы ни декодировали, принцип построения цепочек один и тот же. После того как вы найдёте правильную цепочку, результат нужно будет как-то зафиксировать, чтобы любой открываемый файл подобного типа по умолчанию декодировался по правильной цепочке. К сожалению, в Windows нет встроенных средств для управления приоритетами DirectShow-фильтров, так что для этого нужна отдельная утилита, например DirectShow Filter Manager. Будьте очень аккуратны при её использовании - она затрагивает глубинные настройки операционной системы. Слишком резкое изменение приоритетов может привести к неприятным сюрпризам.

4. Файл в GraphEdit открылся, цепочка фильтров построена и работает, однако исходная проблема упорно не исчезает. Что ж, продолжим эксперименты. Следующий шаг - проверка видео других типов. Постарайтесь найти побольше самых разных видеофайлов и проверить их в GraphEdit. Если все остальные типы файлов играются нормально, а глючит только один кодек или контейнер, возвращайтесь к предыдущему пункту. Ежели выяснится, что глюки никак не связаны с форматом видео, - дела плохи, причина лежит на более низком, чем DirectShow, уровне. Вероятнее всего, она связана с воспроизведением декодированной информации видеокартой (или звуковой картой - в крайне редких случаях). Попробуйте обновить DirectX, переставьте драйверы видеокарты.

Проверьте, работает ли overlay-режим воспроизведения видео, поиграйте с другими настройками драйвера или поищите его более древнюю версию. Как ни странно, в исключительных случаях последняя мера может помочь - как-то мне довелось ставить современную AGP4x-видеокарту на устаревшую материнскую плату на легендарном чипсете i440BX. Система стабильно работала в 3D, а при воспроизведении overlay-видео зависала. Проблема решилась установкой драйвера позапрошлого поколения.

Как показывает практика, четвертый вариант развития событий встречается редко, обычно неприятности случаются из-за конфликтов DirectShow-фильтров. И это легко объяснимо: политика Windows позволяет любому приложению устанавливать в систему свои DirectShow-фильтры, никак не иллюстрируя этот процесс и не спрашивая согласия пользователя. К примеру, установив Nero Burning ROM - известную утилиту для записи CD/DVD-дисков, - можно обнаружить, что парк DirectShow-фильтров неожиданно пополнился декодерами от Nero, казалось бы, не имеющими никакого отношения к нарезке болванок. И этот случай далеко не единственный - многие известнейшие продукты, напрямую не относящиеся к воспроизведению видео и звука, ведут себя аналогично. Таким образом, на перегруженном программными продуктами компьютере скапливается немало фильтров от разных производителей, далеко не всегда корректно взаимодействующих друг с другом.

Окончательно запутывают ситуацию уже упоминавшиеся Codec Pack’и, якобы содержащие в одном инсталляционном файле декодеры для всех возможных форматов видео и аудио. Да, действительно, на момент сборки они, возможно, поддерживают большую часть актуальных форматов. Однако последствия одновременной установки большого количества фильтров совершенно непредсказуемы, ведь заранее узнать, "подружатся" ли они с текущим набором декодеров конкретной системы, невозможно. Хорошо ещё, если на случай "не подружатся" сборщик Codec Pack’a позаботится о правильной процедуре деинсталляции своего детища, а если нет?..

Так что залог видеоздоровья компьютера - установка по отдельности минимума необходимых декодеров. Тогда, возможно, и эта статья вам не пригодится.


По материалам еженедельника "Компьютерра"
© ООО "Компьютерра-Онлайн", 1997-2019
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.