Многие разработчики получили Даниэля напрямую Модули воспроизведения RTSP и RTMP платформы Android трансляционного SDK практически не читают инструкции. После тестирования они напрямую интегрируются в вашу собственную систему. Я должен сказать, что, хотя у нас много модулей, Поддержка функцийвсесторонний,Но логика разработки верхней демо-версии действительно проста.,Некоторые основы разработки под Android,Со всем можно легко справиться.
С точки зрения высокой эффективности, перед интеграцией модулей мы все еще надеемся, что разработчики смогут понять некоторые предпосылки для интеграции проигрывателя, избежать обходных путей и как можно скорее завершить создание возможностей воспроизведения RTSP и RTMP с низкой задержкой.
В этой статье не рассматриваются детали вызовов интеграции интерфейса. В основном она описывает некоторые предварительные условия и меры предосторожности для интеграции проигрывателя.
Если вам нужно изменить имя приложения, просто измените strings.xml:
<string name="app_name">SmartPlayerSDKDemo</string>
имя файла | эффект |
---|---|
SmartPlayerV2 | Плеер прямых трансляций RTSP|RTMP Исходный код демо-проекта |
SmartPlayerV2\app\src\main\jniLibs | smartavengine.jar и libSmartPlayer.so |
SmartPlayerV2\app\src\main\java\com\daniulive\ smartplayer\SmartPlayerJniV2.java | Заголовочный файл проигрывателя |
SmartPlayerV2\app\src\main\java\com\daniulive\ smartplayer\SmartPlayer.java | Пример вызова интерфейса |
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
</uses-permission>
<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
static {
System.loadLibrary("SmartPlayer");
}
splits {
abi {
enable true
reset()
// Specifies a list of ABIs that Gradle should create APKs for
include 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' //select ABIs to build APKs for
// Specify that we do not want to also generate a universal APK that includes all ABIs
universalApk true
}
}
Подробное объяснение интерфейса SDK плеера Android RTSP | RTMP. | |||
---|---|---|---|
описание звонка | интерфейс | интерфейсописывать | |
Вызывается первым, в случае успеха будет возвращен экземпляр воспроизведения. | SmartPlayerOpen | Инициализировать проигрыватель, установить контекстную информацию, вернуть дескриптор проигрывателя | |
Обратный вызов события | SetSmartPlayerEventCallbackV2 | Установить обратный вызов события | |
Настройки жесткого декодирования (H.264) | SetSmartPlayerVideoHWDecoder | Установите, использовать ли жесткое декодирование H.264 для воспроизведения. Если жесткое декодирование не поддерживается, оно автоматически адаптируется к мягкому декодированию. | |
Настройки жесткого декодирования (H.265) | SetSmartPlayerVideoHevcHWDecoder | Установите, использовать ли жесткое декодирование H.265 для воспроизведения. Если жесткое декодирование не поддерживается, оно автоматически адаптируется к мягкому декодированию. | |
видеоэкран Режим заполнения | SmartPlayerSetRenderScaleMode | Установите режим заполнения видеоэкрана, например, заполнение всего изображения или пропорциональное заполнение изображения. Если этот параметр не установлен, по умолчанию будет заполнено все изображение. | |
Установите тип рендеринга в режиме SurfaceView | SmartPlayerSetSurfaceRenderFormat | Установите тип рендеринга в режиме SurfaceView (когда второй параметр NTRenderer.CreateRenderer передает значение false) 0: формат RGB565, если не установлен, этот режим используется по умолчанию 1: формат ARGB8888; | |
Установите эффект сглаживания в режиме SurfaceView. | SmartPlayerSetSurfaceAntiAlias | Установите эффект сглаживания в режиме SurfaceView (если второй параметр NTRenderer.CreateRenderer имеет значение false. Примечание. После включения режима сглаживания производительность изображения может снизиться, используйте с осторожностью). | |
Установите поверхность воспроизведения | SmartPlayerSetSurface | Установите поверхность воспроизведения,если ноль,затем воспроизведи чистый звук | |
Установите режим самостоятельного рисования Mediacodec при жестком декодировании видео. | SmartPlayerSetHWRenderMode | В этом режиме совместимость и эффективность аппаратного декодирования лучше, а функции обратного вызова YUV/RGB, моментального снимка и масштабирования изображения будут недоступны. | |
Обновить поверхность жесткого декодирования | SmartPlayerUpdateHWRenderSurface | настраивать Обновить поверхность жесткого декодирования | |
Аудио обратный вызов | YUV/RGB | SmartPlayerSetExternalRender | Обеспечить декодированный интерфейс данных YUV/RGB,Для пользователей для рендеринга или дальнейшей обработки (например, анализа видео) |
Audio | SmartPlayerSetExternalAudioOutput | Обратный вызов аудиоданных на верхний уровень (для вторичной обработки) | |
тип аудиовыхода | SmartPlayerSetAudioOutputType | Если для параметра use_audiotrack установлено значение 0, устройство вывода будет выбрано автоматически. Если для него установлено значение 1, будет использоваться режим аудиодорожки. В режиме эхоподавления «один к одному» выберите режим аудиодорожки. | |
Тип видеовыхода | NTRenderer.CreateRenderer (в верхней демо) | Второй параметр, если он равен true, использует openGLES для рисования, если false, используется SurfaceView по умолчанию. | |
режим воспроизведения | Настройка времени буфера | SmartPlayerSetBuffer | Установите буфер данных кэша завершения воспроизведения, единица измерения: миллисекунды. Если буфер не требуется, установите его на 0. |
Открыть мгновенно на первом экране | SmartPlayerSetFastStartup | После настройки быстрого запуска,Если CDN кэширует GOP,выполнить Открыть мгновенно на первом экране | |
режим с низкой задержкой | SmartPlayerSetLowLatencyMode | Цель аналогична прямой трансляция Крановые машины и другие сценарии использования, где ожидается сверхнизкая задержка, режим сверхнизкой задержки переключатель Вниз, задержка может достигать 200~400мс | |
Быстрое переключение URL-адресов | SmartPlayerSwitchPlaybackUrl | Быстрое переключение URL-адреса воспроизведения. При быстром переключении изменяется только часть источника воспроизведения. Он подходит для быстрого переключения между различными потоками данных (например, переключения между двумя камерами кукольной машины или переключения между потоками высокого и низкого разрешения). | |
Настройки режима RTSP TCP/UDP | SmartPlayerSetRTSPTcpMode | Установить режим RTSP TCP/UDP. Если этот параметр не установлен, будет использоваться режим UDP по умолчанию. | |
Настройка тайм-аута RTSP | SmartPlayerSetRTSPTimeout | Установите тайм-аут RTSP, единица измерения — секунды, должно быть больше 0. | |
Установите автоматическое переключение RTSP TCP/UDP | SmartPlayerSetRTSPAutoSwitchTcpUdp | Что касается RTSP, некоторые могут поддерживать rtp через udp, а некоторые могут поддерживать rtp через TCP. Для удобства использования в некоторых сценариях можно включить переключатель автоматической попытки. Если после включения udp невозможно воспроизвести, SDK автоматически попытается использовать TCP. Если tcp не может быть воспроизведен, SDK автоматически попытается использовать udp. | |
Установите имя пользователя и пароль RTSP | SetRTSPAuthenticationInfo | Если РТСП URL-адрес уже содержит имя пользователя и пароль, Имя пользователя и пароль, установленные для этого интерфейса, будут недействительны. То есть вам необходимо использовать имя пользователя и пароль, установленные этим интерфейсом, для аутентификации. RTSP URL-адрес не может содержать имя пользователя и пароль. | |
Отключение звука в реальном времени | SmartPlayerSetMute | Отключение звука в реальном времени | |
Установить громкость воспроизведения | SmartPlayerSetAudioVolume | Громкость окончания воспроизведения регулируется в реальном времени, диапазон: [0,100], 0 — звук без звука, 100 — максимальная громкость исходных потоковых данных. | |
Установите, отключать ли расширенный RTMP | DisableEnhancedRTMP | отключить расширенный RTMP, SDK включает расширенный RTMP по умолчанию | |
Скриншот в реальном времени | CaptureImage | Поддерживает форматы JPEG и PNG. | |
Видео поворот зеркала | вращать | SmartPlayerSetRotation | настраивать顺时针вращать, Обратите внимание, что помимо 0 градусов, Другие углы потребуют дополнительной производительности и в настоящее время поддерживаются. 0 градусов, 90 градусов, 180 градусов, 270 градусов вращать |
горизонтальный разворот | SmartPlayerSetFlipHorizontal | настраивать视频горизонтальный разворот | |
вертикальная инверсия | SmartPlayerSetFlipVertical | настраивать视频вертикальная инверсия | |
Установить URL | SmartPlayerSetUrl | Установите URL-адрес RTMP/RTSP, который необходимо воспроизвести или записать. | |
Начать играть | SmartPlayerStartPlay | Начать игратьRTSP/RTMPпоток | |
Хватит играть | SmartPlayerStopPlay | Хватит игратьRTSP/RTMPпоток | |
Закрыть экземпляр воспроизведения | SmartPlayerClose | В конце необходимо вызвать closeinterface для освобождения ресурсов. |