【发布时间】:2022-10-13 15:54:50
【问题描述】:
我将一些音频流数据作为 base64 字符串,我将其转换为 byteArray,然后在本地写入一个文件作为 mp3 文件在媒体播放器中播放。但问题是媒体播放器出现错误(1,-2147483648)。如何解决这个问题,我尝试了很多 SO 帖子,但没有任何效果。
**what I am trying to do is fetch base64 string save locally and play**.
val file = requireContext().getExternalFilesDir(null)?.absolutePath + "/audioRecording1.mp3"
val mediaPlayer = MediaPlayer()
try {
val output = FileOutputStream(file)
output.write(mp3SoundByteArray)
output.close()
val fis = FileInputStream(file)
mediaPlayer.setDataSource(fis.fd)
fis.close()
mediaPlayer.setAudioAttributes(
AudioAttributes.Builder().
setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).
setUsage(AudioAttributes.USAGE_MEDIA).
build())
mediaPlayer.prepareAsync()
mediaPlayer.setOnPreparedListener {
mediaPlayer.start()
}
mediaPlayer.setOnErrorListener { mediaPlayer, i, i2 ->
Log.v("","${i,i2}")
true
}
}catch (e:Exception){
toast(e.message!!)
}
你能告诉我如何克服这个吗?
【问题讨论】:
-
then write a file locally as mp3 file to play in mediaplayer.好的,但这与while playing byteArray不匹配,因为它正在播放 mp3 文件。损坏的 mp3 文件?如果您的 mp3 文件不是有效的 mp3 文件,那么您不会询问媒体层,但更好的是如何解码 base64 以编写有效的 mp3 文件。 -
getting some audio streaming data as base64 String这已经很奇怪了,因为这意味着比原始流多 30% 的字节。
标签: android kotlin android-mediaplayer