Comments 25
поэтому, если неразумно тыкать в экранные кнопки в рандомном порядке, то можно всё сломать
При блокировке экрана как себя поведет?
0
del
0
Да особо и не тестировал. Собственно, это для демонстрации работы — tutorial. Тут, чем проще тем лучше.
0
До этого момента не задумывался о существования софта, который мог бы как регистратор записывать, экономя энергию на выключенном экране. Т.е. насколько проблема для программы работать при заблокированном экране в последних версиях Android
0
А как можно остановить медиарекордер без пересоздания всей сессии превью? Просто в этот момент видимый лаг случается… Если же делать просто остановку медиарекордера, то стопается и само превью…
0
по идее не должно, так как оно теоретически по разным потокам разбросано, то есть медиарекордер работает независимо (можно делать например так скрытую съемку, без превью). Почему лаг, шиш его знает.
В данной демонстрашке нет корректного закрытия камеры, может поэтому крашится.
В данной демонстрашке нет корректного закрытия камеры, может поэтому крашится.
0
Лаг не на UI, а у самой камеры(на превью). Если просто стопнуть медиарекордер, то surface, которую он отдал в CaptureSession будет не валидна, если менять сессию — то видна задержка переключения.
В стандартной камере как-то сделано, что при остановке записи превью не замирает на секунду.
В стандартной камере как-то сделано, что при остановке записи превью не замирает на секунду.
0
Может они на чем-то более низкоуровневом стандартную камеру пишут? Вообще без surface концепций.
0
Конечно, думаю через тот же MediaCodec и муксер.
Но перспектива переделки на это сомнительна ради одной мелкой задержки)
Но перспектива переделки на это сомнительна ради одной мелкой задержки)
0
Вроде как делается через persistant input surface, которая типа не отваливается. Но на сайте андроида сказано, что ее надо делать перед prepare() рекордера и не использовать тогда getSurface.
Но как это привязать к коду и в каком месте вообще тогда непонятно.
Но как это привязать к коду и в каком месте вообще тогда непонятно.
0
В целом там всё понятно, она создаётся и добавляет как в рекордер так и в таргеты при создании CameraSession.
Но у меня не получилось её заиспользовать всё равно)) Почему уже не помню)
Но у меня не получилось её заиспользовать всё равно)) Почему уже не помню)
0
Surface recorderSurface=MediaCodec.createPersistentInputSurface();
mMediaRecorder.setInputSurface(recorderSurface);
матерится на вторую строчку. пишет
setInputSurface is called in an invalid state: 8
mMediaRecorder.setInputSurface(recorderSurface);
матерится на вторую строчку. пишет
setInputSurface is called in an invalid state: 8
0
Точно.
0
Если получится такой способ, то отпишитесь)
0
Так вроде теперь работает. Единственно что каждый новый экземпляр рекордера (после стопа предыдущего) теряет связь с этой PersistantSurface (поскольку она уже была определена в сессии), поэтому я сделал PersistantSurface статической, чтобы новый рекордер мог к ней заново прицепится через mMediaRecorder.setInputSurface(recorderSurface);.
Но смех в том, что лаг хоть и уменьшился, но остался. А я еще удивлялся, неужели камера открывается полторы секунды?
Короче главный тормоз это вот:
Slow Looper main: doFrame is 915ms late because of 2 msg, msg 1 took 912ms (h=android.view.ViewRootImpl$ViewRootHandler c=android.view.View$PerformClick
Может это связано с тем, что все творится в главном потоке? Но там вроде
коллбэки везде. Короче хз.
Причем это же и было в исходной версии, где стопалось превью, просто
я не обратил на это внимания, думая что дело в задержке из-за нового превью.
Но смех в том, что лаг хоть и уменьшился, но остался. А я еще удивлялся, неужели камера открывается полторы секунды?
Короче главный тормоз это вот:
Slow Looper main: doFrame is 915ms late because of 2 msg, msg 1 took 912ms (h=android.view.ViewRootImpl$ViewRootHandler c=android.view.View$PerformClick
Может это связано с тем, что все творится в главном потоке? Но там вроде
коллбэки везде. Короче хз.
Причем это же и было в исходной версии, где стопалось превью, просто
я не обратил на это внимания, думая что дело в задержке из-за нового превью.
0
Sign up to leave a comment.
Android Camera2 API от чайника, часть 2, пишем видео