ExoPlayer не воспроизводит видео HLSAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 ExoPlayer не воспроизводит видео HLS

Сообщение Anonymous »

Я хочу сделать образец тестового видеоплеера, здесь я буду тестировать ссылки hls. Но после нажатия кнопки «Воспроизвести сейчас» появляется вид проигрывателя, но видео не воспроизводится. Я хочу воспроизвести URL-адрес ссылки, вставленный в текстовое поле после нажатия кнопки «Воспроизвести сейчас». Плеер появляется с некоторыми кнопками, но не воспроизводит поток.
Код –

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

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
HomeView()
}
}
}

@Preview(showBackground = true)
@Composable
fun HomeView() {
var text by rememberSaveable { mutableStateOf("") }
var url by rememberSaveable { mutableStateOf("") }

PlayerXTheme {
Surface(modifier = Modifier.fillMaxSize()) {
Box(
modifier = Modifier
.fillMaxSize()
.padding(20.dp),
contentAlignment = Alignment.Center
) {
Column(horizontalAlignment = Alignment.CenterHorizontally) {
SimpleOutlinedTextFieldSample(text) { text = it }
Button(
onClick = { url = text },
modifier = Modifier
.fillMaxWidth()
.padding(top = 16.dp)
) {
Text("Play Now")
}

if (url.isNotEmpty()) {
ExoPlayerView(url = url)
}
}
}
}
}
}

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun SimpleOutlinedTextFieldSample(text: String, onTextChange: (String) -> Unit) {
OutlinedTextField(
value = text,
onValueChange = onTextChange,
label = { Text("HLS/M3U8 URL") },
modifier = Modifier
.fillMaxWidth()
.height(60.dp)
)
}

@Composable
fun ExoPlayerView(url: String) {
val context = LocalContext.current
val exoPlayer = remember {
ExoPlayer.Builder(context).build().apply {
val mediaItem = MediaItem.fromUri(url)
setMediaItem(mediaItem)
prepare()
playWhenReady = true
}
}

DisposableEffect(Unit) {
exoPlayer.addListener(object : Player.Listener {
override fun onIsPlayingChanged(isPlaying: Boolean) {
super.onIsPlayingChanged(isPlaying)
Log.d("ExoPlayerView", "IsPlaying: $isPlaying")
}

override fun onPlaybackStateChanged(state: Int) {
super.onPlaybackStateChanged(state)
Log.d("ExoPlayerView", "PlaybackState: $state")
}
})

onDispose {
exoPlayer.release()
}
}

AndroidView(
factory = {
PlayerView(context).apply {
player = exoPlayer
}
},
modifier = Modifier
.fillMaxWidth()
.height(200.dp)
)
}

Я хочу играть в HLS с помощью Jetpack Compose.

Подробнее здесь: https://stackoverflow.com/questions/785 ... -hls-video
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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