Потоковое мобильное видеовызов Qt

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

Мне нужно разработать мобильное приложение, которое должно иметь возможность принимать вызовы, подобные функциональным возможностям (через Интернет, а не вызов GSM). При ответе он должен начать потоковую передачу аудио и видео с нашего сервера. Вызов должен быть только в одну сторону, то есть поток идет с сервера на устройство, но никогда с устройства на сервер.

Итак, мои вопросы:

  1. Возможно ли это в Qt? Я выбрал Qt, потому что знаком с ним и хочу поддерживать рабочий стол, Android и iOS. возможно, Windows Phone позже.
  2. Можно ли принять вызов, когда экран выключен и мое приложение не запущено? Я имею в виду, что это мобильное устройство, приложение не будет работать постоянно, его нужно запускать только при звонке с сервера на устройство. Как я могу этого добиться? Я думаю, Viber, Skype и другие приложения для обмена сообщениями делают это.

Спасибо заранее :)


person Davita    schedule 30.10.2014    source источник
comment
Я думаю, вы более или менее просите переписать Skype, но я очень жду ответа.   -  person Jacob Krieg    schedule 02.11.2014
comment
Нет, небольшая часть из скайпа. Мне просто нужен путеводитель, где искать и рекомендации опытных людей :)   -  person Davita    schedule 02.11.2014
comment
Отличный вопрос, жду не дождусь ответа!   -  person Jacob Krieg    schedule 02.11.2014
comment
Увы, Qt — это большой фреймворк, но для этой конкретной задачи он пока не очень помогает.   -  person dtech    schedule 08.11.2014


Ответы (4)


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

QT Mobility не имеет структуры для поддержки VoIP, как видно из ссылки: http://doc-snapshot.qt-project.org/qt-mobility/

Вы можете изначально создать VoIP-инфраструктуру своего приложения (что потребует хорошего понимания различных доступных аудио- и видео-фреймворков), но другим способом будет использование VoIP SDK, который поддерживает как iOS, так и Android, например Twilio. мобильный клиент https://www.twilio.com/client/mobile

person Zigglzworth    schedule 04.11.2014

Qt mobile поможет вам в пользовательском интерфейсе вашего приложения, однако вам придется написать собственный код для каждой платформы, которую вы собираетесь использовать. Обратите внимание, что Qt быстро расширяется, вам, возможно, не придется замарать руки собственным кодом для конкретной платформы в следующих версиях Qt.

Да, вы можете принять вызов VoIP, когда ваше приложение закрыто, создав фоновую службу (но, насколько я знаю, пока Qt не выполняет эту работу за вас, вам нужно будет сделать это изначально), это способ, которым Skype и вайбер работают.

person Ramez    schedule 04.11.2014

Насколько мне известно, новая Blackberry10 ОС использует qt для разработки. Существует один доступный исходный код о VoiP Calling в qt. Я все еще ищу о видеозвонке.

Проверьте ссылку ниже, может быть полезно

1) Блог разработчиков Blackberry

(2) Блог PjSip< /а>

(3)Загрузить исходный код

Я не знаю, как разработать приложение на Android, ios, desktop, используя язык qt.

Но я предлагаю разрабатывать приложение на родном языке вместо qt.

person Niranj Patel    schedule 05.11.2014
comment
Помимо того, что это практически ответ только по ссылке, ваше предложение не имеет смысла - Qt - это собственный код C ++, который настолько быстр, насколько это возможно, определенно быстрее, чем Java на Android. - person dtech; 08.11.2014