Видео покадровый поиск

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


person Spidy    schedule 17.08.2011    source источник


Ответы (2)


Поведение по умолчанию в медиа-фреймворке stagefright — всегда искать ключевой кадр. (В отличие от более раннего фреймворка - opencore, чье поведение поиска по умолчанию заключалось в поиске времени.)

Вы не можете выполнять покадровый поиск с помощью API MediaPlayer, предоставляемого Android.

Если вы действительно хотите реализовать покадровый поиск, вам придется использовать стороннюю мультимедийную структуру, такую ​​​​как FFMPEG, или вам нужно будет реализовать свою собственную.

person bluefalcon    schedule 23.08.2011
comment
Думаю, я реализую свой собственный и поделюсь им. - person Spidy; 26.08.2011
comment
Да, я тоже столкнулся с этой проблемой с видеокамерами, показом и кадрами при обработке объектов на экране, в конце концов мы перешли на MJPG, так как у нас был более жесткий контроль над временем и частотой кадров. - person JPM; 26.08.2011
comment
Что, если я запишу видео таким образом, что каждый кадр будет ключевым кадром? ;) - person Moonlit; 10.02.2015
comment
Если вы не пишете свой собственный кодировщик, то это невозможно, к тому же это противоречит всей цели кодирования видеофайла, вы можете просто заархивировать необработанные видеокадры! - person bluefalcon; 10.02.2015

Вы смотрели MediaMetadataRetriever? Там вы можете использовать getFrameAtTime(long timeUs, int option) и вернуть Bitmap.

В зависимости от использования, возможно, это то, что вам нужно.

person Tom Siwik    schedule 23.08.2011
comment
Я должен попробовать. Будет работать только для локальных медиа (не на основе URL-адресов), но это шаг в правильном направлении, если он работает. - person Spidy; 24.08.2011
comment
Если вы еще не знали, Исходный код MediaPlayer . getFrameAt не используется и устарело. Это хороший источник для наблюдения за реализацией MediaPlayer. Как сказал Рави: вы можете реализовать свои собственные. - person Tom Siwik; 25.08.2011
comment
По моему опыту, getFrameAtTime(long timeUs, int option) работает очень плохо. Я сам не нашел решения, но это не похоже. - person Jeremy Stucki; 17.04.2019