Воспроизвести массив байтов в проигрывателе ExoJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Воспроизвести массив байтов в проигрывателе Exo

Сообщение Anonymous »

Я пытаюсь воспроизвести байтовый массив с помощью exo player, есть ли у меня какие-нибудь предложения?
Это то, что я пробовал

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

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
)
)
}
также это моя функция записи, которая имеет функцию возврата byteString/byteArray

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

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()
}
}
И буфер

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

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

}
эта проблема возникает после записи и нажатия кнопки воспроизведения
Изображение


Подробнее здесь: https://stackoverflow.com/questions/749 ... exo-player
Ответить

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

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

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

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

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