YouTubePlayer
YouTube kotlin multiplatform player.
Компонент YouTubePlayer позволяет встроить видеоплеер YouTube в ваше приложение на Jetpack Compose.
Поддержка проекта
Если вы хотите поблагодарить меня или внести вклад в разработку, вы можете сделать пожертвование. Это поможет мне больше сосредоточиться на проекте.Вы также можете подписаться на меня на следующих платформах, чтобы следить за обновлениями моих тем
Установка
Вы можете добавить эту библиотеку в свой проект с помощью Gradle.Мультиплатформенность Чтобы добавить в мультиплатформенный проект, добавьте зависимость в общий source-set:
repositories {
mavenCentral()
}kotlin {
sourceSets {
commonMain {
dependencies {
implementation("io.github.ilyapavlovskii:youtubeplayer-compose:${latest_version}")
}
}
}
}
Использование
val coroutineScope = rememberCoroutineScope()
val hostState = remember { YouTubePlayerHostState() }when(val state = hostState.currentState) {
is YouTubePlayerState.Error -> {
Text(text = "Error: ${state.message}")
}
YouTubePlayerState.Idle -> {
// Do nothing, waiting for initialization
}
is YouTubePlayerState.Playing -> {
// Update UI button states
}
YouTubePlayerState.Ready -> coroutineScope.launch {
hostState.loadVideo(YouTubeVideoId("ufKj1sBrC4Q"))
}
}
YouTubePlayer(
modifier = Modifier
.fillMaxWidth()
.height(300.dp)
.gesturesDisabled(),
hostState = hostState,
options = SimpleYouTubePlayerOptionsBuilder.builder {
autoplay(true)
mute(true) // autoplay works only with mute for mobile devices
controls(false)
rel(false)
ivLoadPolicy(false)
ccLoadPolicy(false)
fullscreen = true
},
)
Функция-компонент имеет следующие основные параметры:
options- для построителя опций плеера. Все параметры обернуты из официальной документации по iframe YouTube.hostState- контроллер для отслеживания состояния плеера YouTube и выполнения одноразовых команд
YouTubePlayerHostState
Основной контроллер. Содержит 2 основных публичных компонента:- currentState - определяет фактическое состояние плеера YouTube на экране. Может быть: Idle, Ready, Playing, Error
- executeCommand - suspend-функция для выполнения команд плеера. Принимает только один аргумент - YouTubeExecCommand. Также имеет дополнительные удобные функции, такие как:
suspend fun loadVideo(videoId: YouTubeVideoId) = executeCommand(YouTubeExecCommand.LoadVideo(videoId))
suspend fun play() = executeCommand(YouTubeExecCommand.Play)
suspend fun pause() = executeCommand(YouTubeExecCommand.Pause)
suspend fun seekTo(duration: Duration) = executeCommand(YouTubeExecCommand.SeekTo(duration))
suspend fun seekBy(duration: Duration) = executeCommand(YouTubeExecCommand.SeekBy(duration))
suspend fun mute() = executeCommand(YouTubeExecCommand.Mute)
suspend fun unMute() = executeCommand(YouTubeExecCommand.Unmute)
suspend fun setVolume(volume: Int) = executeCommand(YouTubeExecCommand.SetVolume(volume))
suspend fun setPlaybackRate(rate: Float) = executeCommand(YouTubeExecCommand.SetPlaybackRate(rate))
suspend fun toggleFullScreen() = executeCommand(YouTubeExecCommand.ToggleFullscreen)YouTubePlayerState
Состояние плеера YouTube определяет фактическое состояние плеера YouTube на экране. Содержит следующие возможные состояния:Idle- Состояние ожидания означает, что плеер еще не инициализированReady- Означает, что плеер готов к воспроизведениюPlaying- плеер воспроизводит видео. Содержит следующие параметры:
videoId: YouTubeVideoId - id of the video that is playing
duration: Duration - duration of the video
currentTime: Duration - current time of the video
quality: YouTubeEvent.PlaybackQualityChange.Quality - quality of the video, see [YouTubeEvent.PlaybackQualityChange.Quality]
isPlaying: Boolean - is video playing
Error- Определяет состояние ошибки с сообщением об ошибке внутри.
YouTubeExecCommand
LoadVideo(val videoId: YouTubeVideoId,val startSeconds: Duration)- загрузить видео по youtube id. Возможно начать с заданного смещения времени старта.Play- воспроизвести видеоPause- поставить видео на паузуSeekTo(val duration: Duration)- перемотать видео к указанному времениSeekBy(val duration: Duration)- перемотать видео на указанное времяMute- выключить звукUnmute- включить звукSetVolume(val volumePercent: Int)- установить уровень громкости. Ожидается значение аргумента от 0 до 100.NextVideo- перейти к следующему видеоPreviousVideo- перейти к предыдущему видеоSetLoop(val loop: Boolean)- повторять видео. Управляется аргументом.SetShuffle(val shuffle: Boolean)- перемешать видео. Управляется аргументом.
YouTubeEvent
Ready- вызывается при завершении инициализации youtube playerPlaybackQualityChange(val quality: Quality)- вызывается при изменении качества воспроизведенияError(val error: String)- событие обработки ошибки. Подробнее см. аргумент.VideoDuration(val duration: Duration)- вызывается при инициализации длительности видеоStateChanged(val state: State)- вызывается при изменении состояния видео:UNSTARTED,ENDED,PLAYING,PAUSED,BUFFERING,CUED.TimeChanged(val time: Duration)- изменился временной штампOnVideoIdHandled(val videoId: YouTubeVideoId)- обратный вызов при загрузке видео
Пример

ЛИЦЕНЗИЯ
Copyright 2026 Ilia PavlovskiiLicensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
---
Tranlated By Open Ai Tx | Last indexed: 2026-06-12
---