Я пытаюсь воспроизвести байтовый массив с помощью exo player, есть ли у меня какие-нибудь предложения? Это то, что я пробовал [code]private fun playAudio(bytes: ByteArray) { lifecycleScope.launch {
player!!.apply { setMediaSource(createMediaSource(bytes)) prepare() playWhenReady = true // start playing when the exoplayer has setup
} } }
fun createMediaSource(bytes: ByteArray): MediaSource { val byteArrayDataSource = ByteArrayDataSource(bytes) val factory = DataSource.Factory { return@Factory byteArrayDataSource } return ProgressiveMediaSource.Factory(factory, ExtractorsFactory { return@ExtractorsFactory arrayOf(Mp3Extractor()) }) .createMediaSource( MediaItem.fromUri( Uri.EMPTY ) ) } [/code] [b]также это моя функция записи, которая имеет функцию возврата byteString/byteArray[/b] [code]suspend fun recordVoice(audioRecord: AudioRecord?) = withContext(Dispatchers.IO) { Log.i("LOG", "BUFFER SIZE: $BUFFER_SIZE_RECORDING") audioRecord?.startRecording() val buf = ByteArray(BUFFER_SIZE_RECORDING) try { do { val byteRead = audioRecord?.read(buf, 0, buf.size) ?: break
if (byteRead < -1) break onRecordedByteString.byteString(buf.toByteString(0, byteRead)) } while (true) } catch (e: Exception) { e.printStackTrace() } } [/code] И буфер [code]companion object { private const val RECORDER_SAMPLE_RATE = 44100 private const val RECORDER_CHANNELS: Int = AudioFormat.CHANNEL_IN_STEREO private const val RECORDER_AUDIO_ENCODING: Int = AudioFormat.ENCODING_PCM_16BIT private val BUFFER_SIZE_RECORDING = AudioRecord.getMinBufferSize( RECORDER_SAMPLE_RATE, RECORDER_CHANNELS, RECORDER_AUDIO_ENCODING ) * 4
} [/code] эта проблема возникает после записи и нажатия кнопки воспроизведения [img]https://i.sstatic.net/9AREz.png[/img]