Когда многим разработчикам нужно выбрать проигрыватель прямых трансляций RTSP для платформы Android, они не знают, как выбрать хороший. В этой статье дается общее объяснение часто используемых решений:
VLC Media Player (мультимедийный проигрыватель VLC), первоначально называвшийся клиентом VideoLAN, представляет собой продукт бренда VideoLAN и мультимедийный проигрыватель, разработанный VideoLAN. Он поддерживает множество аудио- и видеодекодеров и форматов файлов, а также поддерживает аудио- и видеодиски DVD, аудио- и видеодиски VCD, а также различные протоколы потоковой передачи. Его также можно использовать в качестве сервера одноадресной или многоадресной потоковой передачи через высокоскоростное сетевое соединение IPv4 или IPv6. Он сочетает в себе декодер проекта FFmpeg и библиотеку libdvdcss для функции воспроизведения мультимедийных файлов и шифрования DVD-дисков.
VLC для Android — это медиаплеер с открытым исходным кодом, который поддерживает несколько форматов, включая потоковую передачу RTSP. Вы можете интегрировать VLC в свое приложение Android или просто отправить URL-адрес потока RTSP в качестве намерения в приложение VLC для воспроизведения.
Интегрируйте VLC в проекты Android.:
Интеграция VLC в платформу Android в основном включает в себя такие этапы, как получение исходного кода с официального склада VLC, настройку среды разработки Android, сборку проекта, развертывание на устройствах Android и тестирование. Ниже приведен подробный процесс интеграции:
git clone https://code.videolan.org/videolan/vlc-android.git
。vlc-android
Папка как каталог проекта。libvlc
модуль,и щелкните правой кнопкой мыши, чтобы выбрать“Reimport all Gradle project», чтобы гарантировать правильное разрешение всех зависимостей Gradle.ExoPlayer от Google — это библиотека воспроизведения мультимедиа с открытым исходным кодом, разработанная для замены API MediaPlayer в Android и обеспечивающая более широкую поддержку форматов и лучшую производительность. ExoPlayer поддерживает потоковую передачу RTSP (через расширение или собственный рендерер).
Поскольку FFmpeg — очень мощная мультимедийная платформа, она поддерживает несколько протоколов потоковой передачи, включая RTSP. Вы можете использовать FFmpeg с ExoPlayer для декодирования потока RTSP через FFmpeg и передачи декодированных данных в ExoPlayer для воспроизведения.
MediaSource
интегрироватьFFmpeg。этотMediaSource
будет нести ответственность за использованиеFFmpegвытащить и расшифроватьRTSPпоток,И передайте декодированные данные (обычно аудио PCM и видеокадры YUV или RGB) в средство рендеринга ExoPlayer.SimpleExoPlayer.VideoRendererEventListener
иSimpleExoPlayer.AudioRendererEventListener
)Может принимать декодированный звукивидеоданные,и визуализировать его на экране или воспроизвести. Однако,Поскольку механизмы рендеринга FFmpeg и ExoPlayer могут отличаться,Возможно, вам придется написать дополнительный код, чтобы соединить две системы.SmartPlayer — это модуль воспроизведения RTSP с низкой задержкой в серии SmartMediaKit Daniu Live SDK. Он имеет полностью разработанное ядро, полный набор функций, высокую стабильность, сверхнизкую задержку и сверхнизкое использование ресурсов. Он подходит для промышленности. такие как безопасность, образование и индивидуальное управление, а задержка может быть уменьшена до 150-300 мс.
Какой подход вы выберете, зависит от ваших конкретных потребностей, требований к производительности и того, сколько времени вы готовы потратить на интеграцию и поддержку кода. VLC для Android и ExoPlayer — относительно простой и популярный выбор. Если у вас очень высокие требования к стабильности и функциональной производительности, мы думаем, что вы можете посмотреть SmartPlayer из Daniu Live SDK. Мы думаем, что вы можете обратиться к следующему плееру. стандарты:
1. Низкая задержка: Большая часть воспроизведения RTSP предназначена для сценариев прямой трансляции. Если задержка слишком велика, это серьезно повлияет на качество воспроизведения. Поэтому низкая задержка является очень важным показателем для оценки хорошего RTSP-плеера. В настоящее время задержка воспроизведения RTSP в реальном времени в Daniu Live SDK. ниже, чем у плееров с открытым исходным кодом. Он лучше (задержка Daniu Live SDK находится на уровне миллисекунд, а задержка плееров с открытым исходным кодом, таких как VLC, относительно велика), и при длительной эксплуатации Daniu. Проигрыватель Live SDK не вызывает накопления задержек. Плееры с открытым исходным кодом или сторонние, длительные сроки работы, склонны к накоплению задержек;
2. Обработка синхронизации аудио и видео: Чтобы добиться низкой задержки, большинство плееров даже не синхронизируют аудио и видео и не получают звук. Видео воспроизводится напрямую, что приводит к рассинхронизации аудио/видео и различным проблемам, таким как случайные скачки временных меток. Плеер, предоставляемый Daniu Live SDK, имеет хорошую синхронизацию временных меток и ненормальные механизмы исправления временных меток;
Примечание. Если он находится в режиме сверхнизкой задержки, вы можете установить 0 буферов и не синхронизировать аудио и видео:
3. Поддержка нескольких экземпляров: SDK прямой трансляции RTSP, предоставляемый Daniu Live SDK, поддерживает несколько экземпляров потоковых данных RTSP, если позволяет производительность устройства. Большинство проигрывателей с открытым исходным кодом не поддерживают поддержку нескольких экземпляров.
4. Поддержка буфера настройки времени: В некоторых случаях с дрожаниями сети игроку требуется поддержка. буфера Настройка времени, вообще говоря, измеряется в миллисекундах, а плееры с открытым исходным кодом недостаточно дружелюбны, чтобы это поддерживать;
5. Отключение звука в реальном времени: Например, при воспроизведении потоков RTSP в нескольких окнах качество звука будет очень плохим, поэтому функция отключения звука в реальном времени очень необходима. Плееры с открытым исходным кодом не имеют функции отключения звука в реальном времени;
6. Ротация просмотров видео: Многие камеры вызывают инвертирование изображения из-за ограничений установки, поэтому хороший RTSP-плеер должен поддерживать поворот видеоизображения в реальном времени (0°). 90° 180° 270°), горизонтальная инверсия, вертикальная инверсия, плееры с открытым исходным кодом или сторонние плееры не имеют этой функции;
7. Поддержка вывода аудио/видео данных после декодирования: Danniu Live SDK связался со многими разработчиками в надежде получить данные YUV или RGB во время игры и выполнить анализ алгоритмов, например сопоставление лиц. У проигрывателей с открытым исходным кодом нет этой функции;
8. Живой снимок: Очень важно делать интересные или важные снимки в режиме реального времени. У обычных проигрывателей нет возможности делать снимки, а у проигрывателей с открытым исходным кодом этой функции нет;
9. Обработка джиттера сети (например, отключение и повторное подключение): Стабильный механизм сетевой обработки, такая поддержка, как отключение и повторное подключение сети и т. д. Плееры с открытым исходным кодом плохо поддерживают обработку сетевых исключений;
10. Долгосрочная стабильность работы: SDK прямой трансляции RTSP, предоставляемый Danniu Live SDK, подходит для долгосрочной работы, а проигрыватели с открытым исходным кодом имеют плохую поддержку стабильности для долгосрочной работы;
11. Обратная связь по скорости загрузки в режиме реального времени: Daniu Live SDK обеспечивает обратные вызовы загрузки в реальном времени для аудио- и видеопотоков и может устанавливать временной интервал обратного вызова, чтобы обеспечить обратную связь по скорости загрузки в реальном времени для мониторинга состояния сети. Плееры с открытым исходным кодом не имеют такой возможности;
12. Обработка статуса исключения, обратный вызов статуса события: Если сеть прерывается во время воспроизведения, проигрыватель, предоставляемый Daniu Live SDK, может в режиме реального времени вызывать соответствующий статус, чтобы убедиться, что верхний модуль обнаруживает и обрабатывает его. Плееры с открытым исходным кодом не поддерживают это должным образом.
13. Установить режим заливки видео (отображать пропорционально): Во многих случаях некоторые сцены необходимо воспроизводить в полном представлении, а в некоторых случаях, чтобы видео не растягивалось, можно установить отображение с пропорциональным масштабированием;
14. Обнаружение D3D: Вообще говоря, большинство Windows на рынке поддерживают D3D, а некоторые нишевые поддерживают только рисование в режиме GDI, поэтому для лучшей совместимости этот интерфейс очень необходим;
15. Регулировка громкости в реальном времени: Регулировка громкости в реальном времени, особенно в сценариях многоканального воспроизведения, таких как среда с большим экраном, обеспечивает лучшее качество воспроизведения за счет более точной регулировки громкости;
16. Воспроизвести только ключевые кадры: Особенно при воспроизведении сцен с несколькими экземплярами на большом экране, хотя загрузка нашего процессора очень низкая, если мы хотим просмотреть только приблизительный сценарий мониторинга и получить больше каналов воспроизведения, очень хорошей функцией является воспроизведение только ключевых кадров. оригинальные кадры. Воспроизведение можно настраивать в реальном времени;
17. Жесткая расшифровка для конкретных моделей: Жесткое декодирование определенных моделей в основном используется в сценариях многоканального воспроизведения для снижения загрузки ЦП за счет жесткого декодирования;
18. Настройки TCP-UDP: Учитывая, что некоторые серверы, аппаратные устройства или сетевые среды лучше поддерживают TCP или UDP, мы добавили интерфейс настройки;
19. Автоматическое переключение TCP-UDP: Это более подробный интерфейс. Например, по умолчанию установлен режим TCP. По истечении времени ожидания данные автоматически переключаются в режим UDP. Обычно проигрыватели с открытым исходным кодом не имеют этой функции;
20. Настройка таймаута: Например, если данные не получены в течение 10-12 секунд, соединение автоматически переподключится. Как правило, плееры с открытым исходным кодом не поддерживают это должным образом.
Судя по результатам сравнительного теста, и vlc player, и ExoPlayer больше подходят для воспроизведения по запросу. С точки зрения задержки и охвата функций поддержка SmartPlayer Daniu Live SDK — это RTSP, специально разработанный для прямой трансляции. RTMP-плеер с очень низкой задержкой и базовым охватом обычных функций, но не поддерживает воспроизведение по требованию. Вышеупомянутое является введением в тему. Заинтересованные разработчики могут связаться с нами индивидуально.