1 - Ну, конечно, может, хотя это может быть не так просто и прямолинейно, как вам хотелось бы. Qt Multimedia предоставляет необходимые классы, но вам нужно проверить, насколько они поддерживаются на целевых платформах.
Однако классы, предоставляемые Qt, либо слишком высокого уровня, чтобы служить какой-либо цели, кроме их предполагаемой цели, либо слишком низкого уровня, поэтому вы должны реализовать почти все вручную. В этом аспекте преимущество Qt в том, что он может создавать портативные приложения, может не перевешивать простоту использования определенных библиотек для конкретных платформ, которые предлагают потоковое видео из коробки. Другими словами, может быть проще написать отдельные приложения для Android и iOS с использованием библиотек Android и iOS, чем одно приложение Qt, которое будет работать на обоих.
Но на тот случай, если вы решите использовать Qt, как я уже упоминал, на данный момент у вас остается один вариант — сделать большую часть работы самостоятельно. Это означает, что вы должны записывать звук, используя QAudioRecorder
, и периодически захватывать кадры из QCamera
в буфер заданной длины, сжимать эти данные (и предпочтительно шифровать их, если речь идет о безопасности), отправлять их клиенту через соединение QTcpSocket
, распаковывать (и расшифровать) данные и синхронно воспроизвести их. Это, безусловно, выполнимо, но, как уже упоминалось, это будет намного сложнее, поскольку библиотеки Android и iOS предлагают практически готовые решения. В качестве альтернативы вы можете решить использовать стороннее решение, которое предлагает поддержку для всех платформ, на которые вы ориентируетесь.
2 — независимо от того, включен ваш экран или выключен — это будет вызов API для конкретной платформы, так же как и запросы на его включение или сохранение в течение заданного времени. Независимо от того, запущено ваше приложение на устройстве или нет, это легко — просто попробуйте установить TCP-соединение с клиентом на устройстве, и если это удастся, клиент будет запущен. Если вы хотите получать вызовы, когда ваше приложение не запущено, вам придется реализовать службу для конкретной платформы, которая вместо этого работает все время и запускает ваше приложение при получении вызова.
person
dtech
schedule
08.11.2014