Понимаете ли вы, что такое видео API?


Содержание
  1. Что такое видео API?
  2. Что может API видео?
  3. Что происходит после API видео?
  4. 1. Захват аудио и видео
  5. 2. Предварительная обработка аудио и видео
  6. 3. Кодирование аудио и видео
  7. 4. Передача аудио и видео
  8. 5. Декодирование аудио и видео
  9. 6. Рендеринг аудио и видео
  10. Как использовать видео API ZEGOCLOUD
  11. 1. Процесс реализации
  12. 2. Дополнительно: Создайте пользовательский интерфейс
  13. 3. Создание экземпляра ZegoExpressEngine
  14. 4. Вход в комнату
  15. 5. Запуск локального предварительного просмотра видео
  16. 6. Публикация потоков
  17. 7. Воспроизведение потоков
  18. 8. Прекращение публикации и воспроизведения потоков
  19. 9. Выход из комнаты
  20. Знаете ли вы? 👏
  21. Узнать больше
  22. Как создать приложение-клон Clubhouse на Android и ZEGOCLOUD — разработка социального аудиоприложения
  23. DavidRelo for ZEGOCLOUD ・ Jun 29 ・ 3 min read
  24. Создал приложение для совместного просмотра фильмов онлайн за несколько часов (исходный код внутри)
  25. DavidRelo ・ Mar 11 ・ 7 min read
  26. Улучшение качества потокового вещания с помощью смешивания потоков
  27. DavidRelo ・ Jun 21 ・ 4 min read
  28. Как реализовать приложение для видеозвонков с помощью iOS CallKit и ZEGOCLOUD
  29. DavidRelo for ZEGOCLOUD ・ Jul 8 ・ 5 min read

Что такое видео API?

Video API — это интерфейс, предназначенный для предоставления услуг передачи аудио и видео, который в основном делится на два типа: статический видео API и API живого видео.

Static Video API
Static Video API — это API, предоставляющий услуги воспроизведения видеофайлов. Поставщики услуг предлагают услуги облачного хранения видеофайлов и распространения CDN и предоставляют видеоуслуги через протокольные интерфейсы, такие как HTTP и RTMP.

Например, YouTube и Instagram используют Static Video API.

API живого видео
Например, Live.me, Yalla и Uplive используют Live Video API.

API статического видео прост для понимания и извлекает видеофайлы из облака через протокол потоковой передачи.

API живого видео сложнее. Как обеспечить быструю, плавную и четкую передачу видео на другой конец?

В этой статье мы подробно рассмотрим логику, лежащую в основе API живого видео.

Что может API видео?

Применение API видео в реальном времени становится все более обширным с постоянным улучшением пропускной способности сети и производительности устройств. Это делает возможными многие сценарии, такие как:

  1. Прямой эфир
  2. Онлайн-образование
  3. Видеоконференции
  4. Телемедицина
  5. Видеозвонки
  6. Мультиплеер

Что происходит после API видео?

Для API видео в реальном времени необходимо обеспечить, чтобы видеоданные могли завершить сквозную передачу в течение 500 мс и одновременно гарантировать четкость видеоизображения и поток звонков.

Поэтому API живого видео должен гарантировать, что аудио- и видеоданные смогут реализовать сквозную передачу данных быстро, в большом объеме и стабильно. Для обеспечения доступности API живого видео требуется сложная система.

Как показано на рисунке, API живого видео в основном включает в себя функции 6 модулей:

1. Захват аудио и видео

Захват аудио и видео — это источник аудио- и видеоданных, собранных через камеры, микрофоны, экраны, видеофайлы, файлы записи и другие каналы.

Он включает в себя использование цветовых пространств, таких как RGB и YUV, и извлечение аудио характеристик, таких как частота дискретизации, количество каналов, битрейт, аудио кадр и т.д.

2. Предварительная обработка аудио и видео

Предварительная обработка аудио и видео в основном предназначена для бизнес-сценариев, и собранные данные обрабатываются снова и снова для оптимизации обслуживания клиентов.

Например:

  • Обработка видеоданных для красоты, фильтров, спецэффектов и т.д.
  • Обработка аудиоданных включает изменение голоса, реверберацию, эхоподавление, подавление шума, усиление громкости и т.д.

3. Кодирование аудио и видео

Кодирование аудио и видео обеспечивает быструю и безопасную передачу аудио и видео данных по сети.

Обычно используются следующие форматы кодирования: Формат кодирования видео: H264, H265 Формат кодирования аудио: OPUS, AAC.

4. Передача аудио и видео

Передача аудио и видео — самый сложный модуль в видео API. Для обеспечения быстрой, стабильной и качественной передачи аудио- и видеоданных на противоположный конец в сложной сетевой среде могут использоваться потоковые протоколы, такие как RTP, HTTP-FLV, HLS и RTMP.

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

Поэтому, стоит ли выбирать видео API, нужно сосредоточиться на том, обладает ли производитель выдающимися преимуществами передачи аудио и видео.

5. Декодирование аудио и видео

Декодирование аудио и видео означает, что после передачи аудио и видео данных на принимающую сторону, принимающая сторона должна декодировать данные в соответствии с форматом кодирования полученных данных.

Существует два метода декодирования видео: аппаратное декодирование и программное декодирование. Программное декодирование обычно использует библиотеку с открытым исходным кодом FFMpeg. Декодирование аудио поддерживает только программное декодирование; используйте декодирование FDK_AAC или OPUS в соответствии с форматом кодирования аудио.

6. Рендеринг аудио и видео

Рендеринг аудио и видео — это последний шаг в процессе обработки видео API. Этот шаг кажется очень простым. Вам нужно только вызвать системный интерфейс для вывода данных на экран.

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

Как использовать видео API ZEGOCLOUD

Построение полного набора аудио- и видеосистем реального времени — сложная работа. Тем не менее, многие видео API помогают нам решить лежащие в основе сложные операции. Нам нужно сосредоточиться только на бизнес-логике верхнего уровня.

Ниже будет описано, как использовать ZEGOCLOUD Video API для реализации функции вызова видео.

1. Процесс реализации

На следующей схеме показан основной процесс воспроизведения пользователем A потока, опубликованного пользователем B:

В следующих разделах каждый шаг этого процесса объясняется более подробно.

2. Дополнительно: Создайте пользовательский интерфейс

Перед созданием экземпляра ZegoExpressEngine рекомендуется добавить следующие элементы пользовательского интерфейса для реализации основных функций аудио и видео в реальном времени:

  • Представление для локального предварительного просмотра
  • Представление для удаленного видео
  • Кнопка завершения

3. Создание экземпляра ZegoExpressEngine

Чтобы создать экземпляр класса ZegoExpressEngine, вызовите метод createEngine с AppID вашего проекта.

4. Вход в комнату

Чтобы войти в комнату, вызовите метод loginRoom.

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

5. Запуск локального предварительного просмотра видео

Для запуска предварительного просмотра локального видео вызовите метод startPreview с представлением для рендеринга локального видео, переданным в параметре canvas.

Для рендеринга видео можно использовать SurfaceView, TextureView или SurfaceTexture.

6. Публикация потоков

Чтобы начать публикацию локального аудио или видео потока удаленным пользователям, вызовите метод startPublishingStream с соответствующим идентификатором потока, переданным в параметре streamID.

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

7. Воспроизведение потоков

Чтобы начать воспроизведение удаленного аудио или видео потока, вызовите метод startPlayingStream с соответствующим идентификатором потока, переданным в параметре streamID, и видом для отображения видео, переданным в параметре canvas.

Вы можете использовать SurfaceView, TextureView или SurfaceTexture для рендеринга видео.

8. Прекращение публикации и воспроизведения потоков

Чтобы остановить публикацию локального аудио или видео потока удаленным пользователям, вызовите метод stopPublishingStream.

Если запущен локальный предварительный просмотр видео, вызовите метод stopPreview, чтобы остановить его при необходимости.

Чтобы остановить воспроизведение удаленного аудио или видео потока, вызовите метод stopPlayingStream с соответствующим идентификатором потока, переданным в параметре streamID.

9. Выход из комнаты

Чтобы выйти из комнаты, вызовите метод logoutRoom с соответствующим ID комнаты, переданным в параметре roomID.


Зарегистрируйтесь в ZEGOCLOUD и получайте 10 000 минут бесплатно каждый месяц.

Знаете ли вы? 👏

Like и Follow — это самая большая поддержка для меня.
Следуйте за мной, чтобы получить больше технических знаний
Спасибо, что читаете 🙂

Узнать больше

Это одна из живых технических статей. Добро пожаловать в другие статьи:

Как создать приложение-клон Clubhouse на Android и ZEGOCLOUD — разработка социального аудиоприложения

DavidRelo for ZEGOCLOUD ・ Jun 29 ・ 3 min read

#android #мобильный #программирование #учебник

Создал приложение для совместного просмотра фильмов онлайн за несколько часов (исходный код внутри)

DavidRelo ・ Mar 11 ・ 7 min read

#android #java #видео #twilio

Улучшение качества потокового вещания с помощью смешивания потоков

DavidRelo ・ Jun 21 ・ 4 min read

#мобильный #java #учебник #программирование

Как реализовать приложение для видеозвонков с помощью iOS CallKit и ZEGOCLOUD

DavidRelo for ZEGOCLOUD ・ Jul 8 ・ 5 min read

#ios #mobile #tutorial #programming

Оцените статью
devanswers.ru
Добавить комментарий