захватить кадр из видео в Android - PullRequest
0 голосов
/ 24 февраля 2012

Я рассматривал различные способы получения кадра YUV из видеопотока, но большая часть того, что я видел, зависит от получения ширины и высоты из previewSize.Однако мобильный телефон может снимать видео с разрешением 720p, но многие телефоны могут отображать его только с более низким разрешением (например, 800x480), поэтому можно ли сделать снимок экрана, который ближе к 1920x1080 (если видео снимается с разрешением 720p)?Или я вынужден использовать разрешение предварительного просмотра (800x400 на некоторых телефонах)?

Спасибо

1 Ответ

0 голосов
/ 24 февраля 2012

Да, вы можете.*

* Условия применяются -

  • Вам нужен доступ к среднему слою, точнее, работе с медиакадром
  • Нет, это невозможно сделать только через приложение

Теперь, если вы хотите сделать это на уровне работы с мультимедийным кадром, выполните следующие шаги:

  • Если вы используете Froyo и более поздние версии, то по умолчанию используется медиа-кадр StageFright * 1014.*
  • В StageFright перейдите к методу onVideoEvent после чтения буфера из mVideoSource, используйте mVideoBuffer для доступа к видеокадру с его исходным разрешением

Связывание этого с вашим приложением-

  • Вам понадобится кнопка в приложении, чтобы указать снимок экрана
  • Как только пользователь нажмет эту кнопку, вы прочитаете видеокадр из указанного выше места и затем вернете этот буферв слой Java
  • Здесь вы можете использовать JPEG Encoder для преобразования необработанного видеокадра в изображение.

РЕДАКТИРОВАТЬ: Перечитайте ваш вопрос,вы былизапрашивая снимок экрана во время записи или путь камеры.Даже для этого нет способа достичь этого только в приложении, вам придется сделать нечто подобное, но вам потребуется доступ к CameraSource в платформе StageFright.

...