Как воспроизводить потоки 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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