LINUX.ORG.RU

Как перемотать видео на кадр назад? (Тема гораздо сложней, чем кажется)

 , , ,


0

0

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

В связи с чем, у меня возникла куча вопросов(хотя возможно, часть вопросов отпадает сама собой, когда будет ясна причина технического ограничения).

1.Это правда? 1а.Если да, то чем вызваны такие ограничения? 1b.Если нет, то как все-таки отмотать кадр назад?

2.Чтоже такого особенного в тех некоторых форматах видео, в которых умеют отмотать видео на кадр назад? 2а.Может быть кто-нибудь даст список таких «полностью перематываемых» форматов? Необязательно полный, кто сколько сможет.

4.Если есть такие видеоплэйеры для Linux, которые могут воспроизводить любое(или почти любое) видео с перемоткой на один кадр назад(пусть даже для этого понадобится потанцевать с бубном), то прошу перечислить. 4a.Собственно прошу инструкций танцов с бубном. Или хотя бы описание главной мысли таких танцев, авось сам докумекаю что конкретно делать.

5.Как реализовать функцию «минимальной перемотки назад»? То есть, раз видео нельзя перемотать назад на один кадр, то происходит перемотка на минимально возможное число кадров назад. И сразу после завершения перемотки ставится пауза(как при обычной перемотки на кадр вперед).


1.Это правда? 1а.Если да, то чем вызваны такие ограничения?

В документации к мплееру, вроде, этот вопрос освещен.

Ok
()

1.Это правда?

нет</thread>

waker ★★★★★
()

Что-то смутно вспоминается про key frames. А вообще, поставь avidemux, он вроде умеет мотать туда-сюда.

eagleivg ★★★★★
()

avidemux (редактор) - умеет мотать по кадрам.

проблема скорее всего связана с тем, что большинство кадров не являются полноценными, есть кадры keyframe, хранящие полную картинку и затем идут кадры, хранящие только «разницу» между keyframe и текущим. Это позволяет сильно экономить размеры, если картинка не очень активная.

Видел артефакты, когда вместо фильма у тебя зеленый или серый размазанный экран с непонятными движущимися артефактами? это выпавший кейфрейм и по экрану размазывается «разница» от битого кадра.

BaBL ★★★★★
()
Ответ на: комментарий от BaBL

«проблема скорее всего связана с тем, что большинство кадров не являются полноценными,»

Ясно. Но ведь тот же Avidemux как-то же справляется с проблемой? Так разве нельзя настроить обычный видоепроигрыватель так, чтобы он тоже справлялся?

aaz893
() автор топика
Ответ на: комментарий от aaz893

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

note173 ★★★★★
()
Ответ на: комментарий от aaz893

как-то же справляется

Отмотать назад до предыдущего ключевого кадра, промотать вперёд на нужное число промежуточных.

frob ★★★★★
()
Ответ на: комментарий от aaz893

Ясно. Но ведь тот же Avidemux как-то же справляется с проблемой? Так разве нельзя настроить обычный видоепроигрыватель так, чтобы он тоже справлялся?

Как-то справляется и иногда тормозит нехило, накоторые форматы вообще в mjpeg предлагает конвертнуть. В бытовом плеере это не нужно.

BaBL ★★★★★
()
Ответ на: комментарий от frob

Отмотать назад до предыдущего ключевого кадра, промотать вперёд на нужное число промежуточных.

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

Harald ★★★★★
()
Ответ на: комментарий от Harald

а вот чтобы этот предыдущий ключевой кадр найти, надо пройтись по всему файлу от начала и раскодировать всё заново

найти нужный кадр в индексе

thesame ★★★★
()
Ответ на: комментарий от Harald

а вот чтобы этот предыдущий ключевой кадр найти, надо пройтись по всему файлу от начала и раскодировать всё заново

Переход на кейфрейм как раз не требует декодирования, в отличие от точного перехода.

Homura_Akemi
()
Ответ на: комментарий от Homura_Akemi

не факт, зависит от кодека.

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

Harald ★★★★★
()
Ответ на: комментарий от aaz893

Но ведь тот же Avidemux как-то же справляется с проблемой?

avidemux2 кэширует декодированные кадры.

Так разве нельзя настроить обычный видоепроигрыватель так, чтобы он тоже справлялся?

Я разрешаю, настраивай.

i-rinat ★★★★★
()
Ответ на: комментарий от BaBL

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

anonymous
()
25 августа 2013 г.

я апну темку пожалуй, чтобы два раза не пилить

вопрос все тот же - любой видеоплеер с возможностью промотки кадра назад-вперед от текущего места воспроизведения. Под Win с этим условно (весьма условно) справлялся The Kmplayer.

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

avidemux - не выход: при попытке выставить бегунок или время на нужную позицию, ничего не происходит (кино в mkv-контейнере)

MinasFilm
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.