Показать сообщение отдельно
Старый 02.06.2010, 13:14   #1046
Карполя
Техподдержка
Медаль пользователю. ЗОЛОТОМедаль автору. ЗОЛОТО Форумчанин
Аватар для Карполя
Регистрация: 25.01.2008
Адрес: Санкт-Петербург
Сообщения: 1,314
Репутация: 298
Звуковой поток не должен прерываться при воспроизведении, а на декодирование видео и звука нужно некоторое время. Поэтому порция звука сначала считывается из видеофайла в буфер и декодируется в нем, затем считывается порция соответствующего этому звуку видео, и видео декодируется и выводится на дисплей "на лету", по мере считывания из файла (видео буферировать не требуется, т.к. оно дискретное, отдельными кадрами, и пока на дисплее показывается очередной кадр, система успевает подготовить - считать из файла и декодировать - следующий кадр). Одновременно с этим и воспроизводится уже декодированный, размещенный в буфере, звук. Этим обеспечивается синхронность видео и звука на медленных машинах: за счет того, что звук готовится заранее, до того момента, когда он потребуется.

Значение preload и указывает, за сколько времени до начала порции видео надо считать в буфер соответствующую порцию звука, чтоюы комп успел подготовить звук. На собственно синхронность это не влияет, т.к. этот заранее считанный звук все равно будет воспроизводится только тогда, когда будет воспроизводится соответствующая ему порция видео. Но если это значение слишком мало, компьютер может не успеть декодировать звук и тогда пойдет рассинхрон.

Некоторые рипперы рекомендуют умегьшить это число до 100 - 200 мс, мотивируя тем, что современные компьютеры достаточно быстрые, и они успеют обработать звук. Однако, если вы кодируете не только для себя лично, а для общего пользования, это значение лучше не менять, чтобы не было проблем у других. Тем более, уменьшение упреждения все равно никакой выгоды не дает и ни на что не влияет. Значение стандарта по умолчанию (500 мс) как раз наиболее оптимальное.
  Ответить с цитированием