2015-04-27 3 views
0

Я создал приложение для Android, которое записывает экран устройства (используя MediaProjection) API и видео с камеры одновременно. Я использую MediaRecorder в обоих случаях. Мне нужен способ узнать, действительно ли устройство может записывать два видеопотока одновременно. Я предполагаю, что существует некоторое ограничение на количество потоков, которые могут быть закодированы одновременно на данных устройствах, но я не могу найти API на платформе Android для запроса этой информации.Максимальное количество одновременных экземпляров MediaRecorder на Android?

вещей я обнаружил до сих пор:

Документация для MediaRecorder.release() советует выпустить MediaRecorder как можно скорее, как: "Даже если несколько экземпляров одного и тот же кодек поддерживается, некоторое ухудшение производительности можно ожидать, когда нет необходимости многократной экземпляры используются одновременно ». Это говорит о том, что существует ограничение на количество экземпляров кодированного кода, которое напрямую ограничивает число медиарекордеров.

Я написал тестовый код, который создает MediaRecorders (настроенный на использование MPEG4/H264) и запускает их в цикле. На Nexus 5 он всегда терпит неудачу с java.io.IOException: prepare failed при вызове prepare() на 6-м экземпляре. Это говорит о том, что у вас может быть только 5 экземпляров MediaRecorder на Nexus5.

ответ

0

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

0

Я не знаю ничего, что вы можете запросить для этой информации, хотя возможно, что что-то попало в Lollipop, которого я не видел.

Существует ограничение на количество экземпляров аппаратного кодека, которые в значительной степени зависят от пропускной способности оборудования. Это не простой вопрос о том, сколько потоков может обрабатывать устройство - некоторые устройства могут кодировать два потока 720p, но не два потока 1080p.

На некоторых устройствах кодек может вернуться к реализации программного обеспечения, если у него закончились аппаратные ресурсы. Все будет работать, но будет значительно медленнее. (Я видел это для декодирования H.264, но я не знаю, будет ли это происходить и для кодирования.)

Я не верю, что в CTS минимальное системное требование. Было бы полезно знать, что все устройства могут, скажем, декодировать два потока 1080p и кодировать один 1080p одновременно, чтобы видеоредактор мог быть создан для всех устройств, но я не знаю, добавлена ​​ли такая вещь. (Некоторые очень недорогие устройства будут бороться с этим.)

Смежные вопросы