Skip to content

Commit 463ba02

Browse files
committed
set tcp mod to rtsp
1 parent 7a042c1 commit 463ba02

2 files changed

Lines changed: 53 additions & 10 deletions

File tree

mobile/src/main/java/com/iokreal/myapplication/MainActivity.kt

Lines changed: 50 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ import java.io.File
2424
import java.lang.Long.min
2525
import java.net.HttpURLConnection
2626
import java.net.URL
27+
import androidx.media3.common.Player
28+
import androidx.media3.exoplayer.DefaultLoadControl
29+
import androidx.media3.common.PlaybackException
30+
import androidx.media3.exoplayer.rtsp.RtspMediaSource
2731

2832
object AppPreferences {
2933
private const val PREFS_NAME = "AppPreferences"
@@ -192,16 +196,55 @@ class MainActivity : AppCompatActivity() {
192196
}
193197

194198
private fun initPlayer(playerView: PlayerView, url: String) {
195-
player = ExoPlayer.Builder(this).build()
199+
val loadControl = DefaultLoadControl.Builder()
200+
.setBufferDurationsMs(
201+
1000,
202+
5000,
203+
500,
204+
500
205+
)
206+
.build()
196207

197-
playerView.player = player
208+
val newPlayer = ExoPlayer.Builder(this)
209+
.setLoadControl(loadControl)
210+
.build()
198211

199-
val mediaItem = MediaItem.fromUri(url)
200-
player.setMediaItem(mediaItem)
212+
playerView.player?.release()
213+
playerView.player = null
214+
playerView.player = newPlayer
201215

202-
player.prepare()
203-
player.playWhenReady = true
204-
player.volume = 0f
216+
if (url.lowercase().startsWith("rtsp")){
217+
var mediaItem = RtspMediaSource
218+
.Factory()
219+
.setForceUseRtpTcp(true)
220+
.createMediaSource(MediaItem.fromUri(url))
221+
newPlayer.setMediaSource(mediaItem)
222+
223+
}else{
224+
val liveConfig = MediaItem.LiveConfiguration.Builder()
225+
.setTargetOffsetMs(2000)
226+
.setMinPlaybackSpeed(1.0f)
227+
.setMaxPlaybackSpeed(1.1f)
228+
.build()
229+
230+
val mediaItem: MediaItem = MediaItem.Builder()
231+
.setUri(url)
232+
.setLiveConfiguration(liveConfig)
233+
.build()
234+
newPlayer.setMediaItem(mediaItem)
235+
}
236+
237+
newPlayer.addListener(object : Player.Listener {
238+
override fun onPlayerError(error: PlaybackException) {
239+
Log.e("ExoPlayer", "Ошибка плеера: ${error.message}")
240+
newPlayer.prepare() // Переподготовка при ошибке
241+
newPlayer.play()
242+
}
243+
})
244+
245+
newPlayer.prepare()
246+
newPlayer.playWhenReady = true
247+
newPlayer.volume = 0f
205248
}
206249
fun openSettings(view: View) {
207250
Log.d("MainActivity", "open Settings")

mobile/src/main/res/layout/activity_main.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616
android:layout_height="0dp"
1717
android:layout_weight="1">
1818
<androidx.media3.ui.PlayerView
19+
app:use_controller="false"
1920
android:id="@+id/videoView6"
2021
android:layout_width="match_parent"
2122
android:layout_height="match_parent"
22-
app:layout_constraintStart_toStartOf="parent"
23-
app:use_controller="false" />
23+
app:layout_constraintStart_toStartOf="parent"/>
2424
</LinearLayout>
2525

2626
<LinearLayout
@@ -30,10 +30,10 @@
3030
android:orientation="vertical"
3131
android:layout_weight="1">
3232
<androidx.media3.ui.PlayerView
33+
app:use_controller="false"
3334
android:id="@+id/videoView4"
3435
android:layout_width="match_parent"
3536
android:layout_height="wrap_content"
36-
app:use_controller="false"
3737
app:layout_constraintStart_toStartOf="parent"
3838
android:layout_weight="5"/>
3939
</LinearLayout>

0 commit comments

Comments
 (0)