LINUX.ORG.RU

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

 , , ,


0

0

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

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

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

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

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

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


Ответ на: комментарий от 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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.