Привет, ребята, я пытаюсь воспроизвести аудиосообщения, которые поступают как CloudKey в формате mp4, с помощью MediaPlaAndroid

Форум для тех, кто программирует под Android
Anonymous
Привет, ребята, я пытаюсь воспроизвести аудиосообщения, которые поступают как CloudKey в формате mp4, с помощью MediaPla

Сообщение Anonymous »

Этот код необходим для реализации функций MediaPlayer. Так как сам проект мультиплатформенный.

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

    class AudioPlayerImp(private val client: HttpClient) : AudioPlayer {
private var mediaPlayer: MediaPlayer? = null
private var playerState: PlayerState = PlayerState.IDLE
override suspend fun play(audioUrl: String) {
stop()
val downloadsDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
val fileName = audioUrl.split("/").last()
val filePath = "${downloadsDir.absolutePath}/$fileName"
val file = File(filePath)
if (!file.exists()) {
client.downloadAndSave(audioUrl, fileName)
return
}
mediaPlayer = MediaPlayer().apply {
setDataSource(filePath)
setOnPreparedListener {
setPlayerState(PlayerState.PREPARED)
// Начать воспроизведение после подготовки
if (getPlayerState() == PlayerState.PREPARED) {
start()
setPlayerState(PlayerState.PLAYING)
}
}
setOnBufferingUpdateListener { _, percent ->
if (getPlayerState() == PlayerState.COMPLETED || getPlayerState() == PlayerState.PAUSED) {
return@setOnBufferingUpdateListener
}
if (!isPlaying && percent >= 50) { // Порог буферизации в 50%
if (getPlayerState() == PlayerState.PREPARED) {
start()
setPlayerState(PlayerState.PLAYING)
}
}
}
setOnCompletionListener {
setPlayerState(PlayerState.COMPLETED)
}
setOnErrorListener { _, what, extra ->
setPlayerState(PlayerState.ERROR)
true  Ошибка обработана
}
prepareAsync() Асинхронная подготовка MediaPlayer
}
}
}

Я удалил комментарии, но некоторые нижние колонтитулы остались внизу. Если будет необходимость, добавлю их ответом.
Сначала я пробовал передать просто ссылку, но это тоже ничего не дало. Теперь вот журналы:
mediaserver D FileSource удаленный
2024-09-22 15:12:48.367 465-6969 Parcel mediaserver W Ожидается связующее, но получено нулевое значение!
2024-09-22 15:12:48.367 465-6969 GenericSource mediaserver E initFromDataSource, невозможно создать экстрактор!
2024-09-22 15:12:48.367 465-6969 GenericSource mediaserver E Не удалось инициализировать из источника данных!
2024-09-22 15:12:48.369 6854-6868 MediaPlayerNative io....shlmsmultiplatform.androidApp E ошибка (1, -2147483648)
2024-09-22 15:12:48.369 6854- 6854 MediaPlayer io....shlmsmultiplatform.androidApp E Ошибка (1,-2147483648)


Подробнее здесь: https://stackoverflow.com/questions/790 ... -format-wi

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