Как воспроизводить потоки UDP с помощью Media3 (ExoPlayer)?Android

Форум для тех, кто программирует под Android
Anonymous
Как воспроизводить потоки UDP с помощью Media3 (ExoPlayer)?

Сообщение Anonymous »

Сейчас я работаю над приложением для Android, использующим библиотеку Media3 (ExoPlayer) для потоковой передачи видеоконтента. Я успешно реализовал воспроизведение потоков HTTP, но у меня возникли проблемы с воспроизведением потока UDP.
Я использую следующий код для настройки ExoPlayer:

Код: Выделить всё

package com.itsthe1.onetv

import android.net.Uri
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.media3.common.MediaItem
import androidx.media3.exoplayer.ExoPlayer
import androidx.media3.ui.PlayerView
import androidx.media3.common.PlaybackException
import androidx.media3.common.Player

class MainActivity : AppCompatActivity() {

private lateinit var player: ExoPlayer
private var playerView: PlayerView? = null
private val TAG = "MainActivity"

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

playerView = findViewById(R.id.player_view)
setupExoPlayer()
}

private fun setupExoPlayer() {
player = ExoPlayer.Builder(this).build().apply {
playerView?.player = this

// Replace with your UDP stream URI
val udpUri = Uri.parse("udp://@239.255.0.1:1234")
setMediaItem(MediaItem.fromUri(udpUri))

addListener(object : Player.Listener {
override fun onPlayerError(error: PlaybackException) {
Toast.makeText(this@MainActivity, "Playback error: ${error.message}", Toast.LENGTH_SHORT).show()
Log.e(TAG, "Playback error: ${error.message}")
}
})

prepare()
playWhenReady = true
}
}

override fun onStop() {
super.onStop()
player.pause()
}

override fun onDestroy() {
super.onDestroy()
player.release()
}
}

androidx.media3.exoplayer.ExoPlaybackException: ошибка источника
Вызвано: androidx.media3.datasource.UdpDataSource$UdpDataSourceException: java.net.SocketTimeoutException: истекло время опроса
Что я пробовал:
Проверил URI потока UDP и протестировал его с помощью VLC Media Player.
Убедился, что мое устройство Android имеет сетевой доступ к адресу многоадресной рассылки.
Что я пробовал:
Проверил URI потока UDP и протестировал его с помощью VLC Media Player.
Убедился, что мое устройство Android имеет сетевой доступ к адресу многоадресной рассылки.
Что я пробовал:
Проверил URI UDP-потока и протестировал его с помощью VLC Media Player.
Убедился, что мое устройство Android имеет сетевой доступ к адресу многоадресной рассылки.
/>Проверены настройки сети, чтобы убедиться, что многоадресный трафик разрешен.
Добавлены необходимые разрешения в

Код: Выделить всё

AndroidManifest.xml
Нужны ли в ExoPlayer определенные конфигурации или настройки для воспроизведения потоков UDP?

Подробнее здесь: https://stackoverflow.com/questions/791 ... -exoplayer

Вернуться в «Android»