# rtsp_model_xml **Repository Path**: askmonkey/rtsp_model_xml ## Basic Information - **Project Name**: rtsp_model_xml - **Description**: 一款非常优秀的低延迟rtsp流视频播放器 - **Primary Language**: Android - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2025-05-23 - **Last Updated**: 2025-12-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # rtsp_model_xml #### 介绍 一款非常优秀的低延迟rtsp流视频播放器 #### 软件架构 软件架构说明 #### 安装教程 1. 引入项目依赖的rtsp播放库build.gradle ``` allprojects { repositories { maven { url 'https://jitpack.io' } } } dependencies { implementation 'com.github.alexeyvasilyev:rtsp-client-android:5.3.5' } ``` 2. 权限 ``` ``` 3. xml视图 ``` ``` 4.使用 ``` val uri = Uri.parse("rtsps://10.0.1.3/test.sdp") val username = "admin" val password = "secret" svVideo.init(uri, username, password) svVideo.start( requestVideo = true, requestAudio = true, requestApplication = false) // ... svVideo.stop() //可以使用不进行任何解码的库(仅用于从 RTSP 源获取原始帧),例如通过多路复用器将视频流写入 MP4。 val rtspClientListener = object: RtspClient.RtspClientListener { override fun onRtspConnecting() {} override fun onRtspConnected(sdpInfo: SdpInfo) {} override fun onRtspVideoNalUnitReceived(data: ByteArray, offset: Int, length: Int, timestamp: Long) { // Send raw H264/H265 NAL unit to decoder } override fun onRtspAudioSampleReceived(data: ByteArray, offset: Int, length: Int, timestamp: Long) { // Send raw audio to decoder } override fun onRtspApplicationDataReceived(data: ByteArray, offset: Int, length: Int, timestamp: Long) { // Send raw application data to app specific parser } override fun onRtspDisconnected() {} override fun onRtspFailedUnauthorized() { Log.e(TAG, "RTSP failed unauthorized"); } override fun onRtspFailed(message: String?) { Log.e(TAG, "RTSP failed with message '$message'") } } val uri = Uri.parse("rtsps://10.0.1.3/test.sdp") val username = "admin" val password = "secret" val stopped = new AtomicBoolean(false) val sslSocket = NetUtils.createSslSocketAndConnect(uri.getHost(), uri.getPort(), 5000) val rtspClient = RtspClient.Builder(sslSocket, uri.toString(), stopped, rtspClientListener) .requestVideo(true) .requestAudio(true) .withDebug(false) .withUserAgent("RTSP client") .withCredentials(username, password) .build() // Blocking call until stopped variable is true or connection failed rtspClient.execute() NetUtils.closeSocket(sslSocket) ```