Автор: Бэй Ляо Инженер JAVA Е Чживэй
Большая часть работы программистов заключается в пассивной реализации требований менеджеров по продукту Здесь мы разделяем процесс активного продвижения и реализации требований программистами.
1. Предыстория требований
Наблюдение за ребенком и восходящей звездой — это видеопродукт Beichao в прямом эфире, и в настоящее время он использует только облачный сервис потокового вещания Qiniu Family. Основной бизнес заключается в том, чтобы транслировать в прямом эфире через устройство камеры или мобильный телефон учителя, передавать поток на Qiniu, и родители смотрят его через страницу H5. Схема бизнес-процесса выглядит следующим образом:
Ясно видно, что сервер и клиент Beichat полностью зависят от услуг Qiniuyun.Если Qiniuyun выйдет из строя, весь продукт живого видео будет парализован! Так родилась наша потребность: доступ к другому поставщику облачных услуг прямой трансляции для повышения доступности услуг. Таким образом, его можно использовать как для аварийного восстановления, так и для переключения трафика.
2. Выбор поставщика облачных услуг для потокового вещания
После исследования альтернативными поставщиками услуг, которых мы зафиксировали, являются Tencent Cloud, Alibaba Cloud, Kingsoft Cloud и NetEase Cloud. Выбор нового поставщика облачных услуг для прямых трансляций не может решаться в прямом порядке. Нам необходимо учитывать преимущества и недостатки каждого поставщика услуг, стоимость и соответствие нашим функциональным требованиям. Основные моменты заключаются в следующем:
- Ограничения на стороне клиента: для нашего приложения Beichao Teacher Edition требуется минимальная версия Android 4.0, а для Alibaba Cloud и NetEase Cloud требуется минимальная версия 4.3.
- Ограничения на существующие функциональные точки: продукт был запущен, и новый поставщик услуг должен иметь функции, аналогичные Qiniu, включая потоковую передачу push-pull, аутентификацию, синхронизацию снимков экрана, уведомление обратного вызова о состоянии, сохранение и воспроизведение и т. д.
- Проблема стоимости: Tencent Cloud имеет самую высокую стоимость, в то время как Alibaba Cloud и Kingsoft Cloud относительно низки.
Из-за ограничений клиента альтернативные поставщики услуг в основном заблокированы в Tencent Cloud и Kingsoft Cloud. Поскольку он используется в качестве резервного, стоимость является второстепенным фактором, а стабильность и надежность являются нашими основными проблемами. Поэтому мы наконец выбрали Tencent Cloud в качестве альтернативного поставщика услуг прямых трансляций.
3. Процесс реализации
Чтобы получить доступ к новому поставщику облачных услуг потокового вещания, бизнес-схема корректируется следующим образом:
3.1 Бизнес-изменения
- Добавлена функция фоновой работы, и SDK, используемый поставщиком услуг и клиентом, можно переключать. В настоящее время можно переключать только ручных поставщиков услуг, а в будущем может быть добавлен механизм системного обнаружения и сигнализации для автоматического переключения. Однако если система полностью переключится автоматически, возникнет риск ложных срабатываний.
- Прямая трансляция основана на программе, и добавлено поле, чтобы указать, какого поставщика услуг использовать при создании программы. Все последующие операции, такие как генерация адреса push-потока, адреса pull-потока, создание скриншота, сохранение и воспроизведение, вызывают интерфейс поставщика услуг.
- Адрес push-потока генерируется и подписывается сервером и возвращается клиенту.Клиенту не нужно заботиться об используемом поставщике услуг, а только о том, какой SDK использовать. Приоритет отдается использованию Tencent Cloud SDK.Поскольку его стабильность не может быть гарантирована, SDK Qiniu Cloud и Tencent Cloud одновременно подключаются на ранней стадии, и их соответствующие коэффициенты использования настраиваются в фоновом режиме.
- Добавлена обработка уведомлений об обратном вызове Tencent Cloud.
- Включая обратный вызов статуса push-потока, обратный вызов скриншота и обратный вызов создания файла записи. Программа имеет одно пространство потоков, а пространства потоков Qiniu Cloud и Tencent Cloud уникальны в глобальном масштабе, поэтому каждый обратный вызов Qiniu Cloud или Tencent Cloud может точно найти соответствующую программу.
- Способ воспроизведения генерируется совершенно по-другому. Облако Qiniu генерируется вызовом интерфейса в конце прямой трансляции, в то время как Tencent Cloud добавляет параметр &record=mp4&record_interval=5400 после адреса push-потока, а затем получает обратный вызов. Tencent Cloud также может настроить автоматическое сохранение глобального push-потока.
- Tencent Cloud проводит различие между производственной средой и тестовой средой. Уведомления об обратном вызове Tencent Cloud настраиваются глобально, и среда не может быть различима. Использование нескольких учетных записей увеличивает затраты. Поэтому все уведомления об обратном вызове настраиваются как рабочие среды. При вызове интерфейса асинхронной обработки идентификатор задачи сохраняется в базе данных. среду не удается найти, перенаправить в тестовую среду.
3.2 Изменения структуры кода
Сначала был подключен только один поставщик услуг, а структура кода была относительно простой. В настоящее время, чтобы избежать повторяющегося кода, используется слишком много if и else, поэтому используется простой фабричный шаблон. Бизнес-код единообразно вызывает фабричный класс VideoTV3rdLiveServiceFactory. Qiniu Cloud и Tencent Cloud написали набор бизнес-кодов, а именно VideoTVQcloudLiveService и VideoTVQiniuLiveService, для реализации связанных с бизнесом логических кодов, таких как генерация адресов push-потока, получение адресов pull-потока, а также сохранение и переигрывание. QcloudService — это инкапсуляция Tencent Cloud API и SDK, а PiliService и StorageService — это инкапсуляция Qiniu Cloud SDK.
4. Последующая работа
- Реализуйте обнаружение неисправностей системы и сигнализацию. Система регулярно пытается протолкнуть поток, и если сбой достигает n раз, она отправляет сигнал тревоги по электронной почте и SMS.
- Существуют новые бизнес-требования, которые необходимо реализовать в двух наборах, которые связаны с Qiniu Cloud и Tencent Cloud соответственно.