2013-07-04 3 views
2

Я работаю над Android-приложением, которое может захватывать кадр из видео, когда пользователь выполняет щелчок на кнопке, приложение Android, предназначенное для воспроизведения видео с помощью TextureView. Для захвата кадра в виде растрового изображения, я использую:Android TextureView: видео, отображающее серый кадр при вызове getBitmap

Bitmap bit = textureView.getBitmap(width, height); 

Он отлично работает, но «getBitmap» занимает довольно много времени (около 150-200 мс для 640х480 кадра). Проблема заключается в том, что в то время как getBitmap называется серым фреймом, отображается на экране. Похоже, что что-то щелкает. Есть ли способ справиться с этой проблемой?

Благодаря

+0

вы пробовали запустить метод getBitmap в отдельном потоке? Потребовалось бы некоторое время, чтобы получить растровое изображение, но, по крайней мере, это не испортило бы ваши обратные вызовы дисплея! –

+0

Это проверено? –

+0

Захват происходит в одном потоке, для съемки кадра требуется много времени – san

ответ

0

Вы должны использовать Handler, чтобы избежать времени задержки

new Handler().post(new Runnable() { 
@Override 
public void run() { 
    try { 
     Bitmap bit = textureView.getBitmap(width, height); 
     //you could save the video frames to use later 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 
}});