Xpoint
   [напомнить пароль]

Юзабилити синхронизации звука и видео в AVI

Метки: [без меток]
2002-11-17 16:01:56 [обр] Дмитрий Котеров(2/912)[досье]

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

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

В каких случаях уход звука особенно раздражает? Когда смотришь
фильм (чаще всего - впервые) и вдруг замечаешь что, например,
по звуку дверь уже давно хлопнула, а по изображению -
только что. В этом случае
хочется сразу же сделать "что-то", чтобы, не прерывая фильм,
заставить видео и звук синхронизироваться. Это нужно сделать
"минимальной кровью", чтобы не отрываться от фильма. А уж затем,
после просмотра (если захочется) можно произвести и более точную
подстройку (это будет делаться очень редко).

Первый способ: есть несколько горячих клавиш:

- Num5 - сброс запаздывания на 0 (если видео вдруг само собой
  синхронизировалось, так бывает в некоторых фильмах)
- Num* - пока держишь, звук "замирает", но видео продолжает идти.
  Отпускаешь - звук также продолжает. Например, услышал хлопок
  двери машины - тут же нажимаешь Num* и ждешь, пока на
  экране дверь не хлопнет. Как только это происходит, отпускаешь.
- Num/ - если в предыдущем пункте перебрал, позволяет чуть-чуть
  вернуться назад. Калибровка должна быть достаточно точной -
  по крайней мере, с частотой кадров (шаг 1/25 с).

Точка сдвига начинает записываться в момент первого нажатия Num*
или Num5. Таким образом, при втором просмотре (драйвер должен
хранить в отдельных файлах все точки сдвига и автоматически
применять их, как только открывается тот или иной AVI)
корректировка будет практически мгновенной (исключается время на
манипуляции с клавиатурой).

Второй способ. Предположим, я смотрю фильм и заметил, что
звук вдруг ушел
вперед. Я нажимаю и удерживаю клавишу Shift. На то время, пока я
ее держу, фильм начинает циклически повторяться - вернее,
повторяется последняя секунда (или две, не важно) вместе со
звуком (вроде бы это можно сделать - я видел кнопку Resync в
твоем фильтре, она работает похоже). То есть, пока нажат Shift,
фильм начинает "клацать". В этот момент очень удобно использовать
+/- для регулировки задержки. Отпускаю Shift - и фильм идет
дальше.

Пример. По звуку я слыша, что хлопнула дверь, а по изображению
она хлопает лишь через несколько секунд. Я нажимаю Shift, и дверь
начинает "хлопать" циклически. В этот момент я использую +/- для
"подгонки" хлопка визуального к хлопку звуковому. Это очень легко
сделать, буквально с точностью до десятой доли секунды. Отпускаю
Shift - и все синхронизировано.

Тут есть такой момент: прежде, чем входить в цикл, нужно
"отмотать" несколько секунд фильма назад (потому что сообразить,
что хлопок ушел вперед от изображения, сразу довольно сложно).
Поэтому можно предложить и альтернативный интерфейс: пока Shift
нажат, фильм идет, как обычно, но при отпускании начинает
"клацать" на последней секунде. В этот момент можно использовать
+/-, а затем, чтобы продолжить, однократно нажать Shift.

Может, кому-то придут в голову еще варианты, более удобные?..
Я был бы рад их обсудить.

спустя 9 часов [обр] Дмитрий Горяинов aka "три галки"(1/542)[досье]

Мне импонирует вариант с Shift - отмотка - цикл - подстройка через +/-

Кстати, в моей практике я борюсь с этим так (для просмотра используется обычный Windows Media Player):

меню File -> Properties | закладка Advanced | список Filters in use

выбираем DivX MPEG-4 DVD Video Decompressor, жмем кнопку Properties
и снижаем уровень первого регулятора CPU (Quality) <-> DivX ;-) DVD Video

спустя 9 часов [обр] LookeR(13/1069)[досье]
Однажды столкнулся, но после отключения "фильтров" в звуковой и перехода на BSPlayer таких глюков не видел очень давно.
спустя 45 минут [обр] Евгений Бондарев aka Eugene Bond(3/1600)[досье]

Да, в основном такие глюки в WMP. Кстати, подобная примочка уже есть, и звук не "уходит" после ее использования (она патчит кодек).

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

Имеется 2 полосы: одна полоса видеоряда и одна звукоряда. По щелчку на полосе видеоряда мы получаем на экране соответствующий кадр фильма и ползунок на полосе звукоряда устанавливается в соответствующую позицию. Далее он или передвигается, что приводит к коррекции или сразу же ставится контрольная точка.


Был, кстати, и еще один патч: в случае ухода звука, видео нагоняло звук путем пропуска кадров (при неудачной конфигурации - куска фильма)

спустя 49 минут [обр] Дмитрий Котеров(2/912)[досье]

Вопрос о том, из-за чего уходит звук, не стоит — уходит он из-за некачественной записи фильма (а не из-за ошибок в кодеке), это проверено и многократно обсуждалось здесь в других темах. Вопрос исключительно о пользовательском интерфейсе. Но было бы интересно ппробовать и «примочку» (хотя бы для того, чтобы убедиться, что она не помогает).

Вариант с графикой и мышью не подходит, потому что это не наглядно и не позволяет минимально отвлекаться от просмотра фильма. Хотя, наверное, нечто подобное и будет когда-нибудь — но только в виде графика, по оси X — время, а по оси Y — delta-t.

спустя 25 минут [обр] Евгений Бондарев aka Eugene Bond(3/1600)[досье]
dmitry kOteroff:
Вариант с графикой и мышью не подходит, потому что это не наглядно и не позволяет минимально отвлекаться от просмотра фильма.

Как раз более, ИМХО, наглядно. Отвлекаться от просмотра фильма не прийдется, т.к. обработка приходит перед просмотром фильма и занимает, к примеру 5 минут. Я так понял, что эти контрольные точки будут сохраняться, иначе "подгон" звука приходилось бы делать в процессе каждого просмотра фильма => удобнее сделать это сразу заранее, чем в процессе, хотя возможность "подгона" в процессе так же должна быть.

"Текстово-буквенный" вариант с зацикливанием фильма по ScrollLock и подгоном звука при помощи PageUP/DOWN (малый сдвиг) + HOME/END (большой сдвиг, типа +/- секунда)

спустя 54 минуты [обр] LookeR(13/1069)[досье]

ИМХО, качественно синхронизовать звук с видео можно только "видя звук", т.е. нужен стандартный интерфейс редактора звуков.

Что касается нажатий "кто быстрее" - это, ИМХО, неюзабельно совсем.
Взять редактор, совместить ключевые точки видео со звуком и смотреть-наслаждаться... а в процессе просмотра "подтягивать" звук или видео...

Хм... остановить видео и указывать задержку или разгон цифрами в секундах или долях. Ввел и смотри на здоровье. +0.6 или -3 Имхо так проще и быстрее, чем ловить "звук" на слух...

спустя 5 часов [обр] Дмитрий Котеров(2/912)[досье]

Евгений Бондарев:

обработка приходит перед просмотром фильма

Как это Вы себе представляете, интересно? Я, к примеру, скачал новый интересный фильм, который еще не смотрел. Я хочу сесть и посмотреть его, а уж если (не дай бог) пойдут глюки — оперативно подкорректировать и смотреть дальше. Ни о каких «пяти минутах» начального просмотра речи не идет. Да, контрольные точки сохраняются, причем «прозрачно» для пользователя (можно даже дописывать их в «хвост» AVI-файла).

LookeR:
а как удадать точное число секунд и долей? Ведь даже рассинхронизация на десятую долю секунды уже заметна.

спустя 10 минут [обр] Евгений Бондарев aka Eugene Bond(3/1600)[досье]

dmitry kOteroff:
Лучше день потерять, а потом за пять минут долететь! (с) Мультик про "Крылья, ноги и хвосты"

Лучше сразу сделать 10-20 контрольных точек и расслабиться при просмотре, чем на самом интересном месте, вообужившись трехэтажным матом, "оперативно подкорректировать". После 5-й коррекции уже не захочется никакого кина...

спустя 40 минут [обр] Дмитрий Котеров(2/912)[досье]
Евгений Бондарев:
Так в том-то и дело, что найти эти самые контрольные точки можно только экспериментальным путем, то есть, просмотрев фильм. Рассинхронизации возникают и (кстати сказать) пропадают весьма спонтанно. Вероятнее всего, при записи (сжатие занимает около 10 часов) периодически приходит «оператор» и «подкручивает ручку», если видит, что с записью что-то не то.
Powered by POEM™ Engine Copyright © 2002-2005