我正在使用android媒体播放器在我的应用程序中播放音频。我用于在媒体播放器中设置数据源的URL来自s3 amazon桶,它存储在amazon服务器中。该文件是使用FTP协议提供的。
问题:如果我在浏览器中检查我正在使用的URL,那么它会自动开始下载(就像使用FTP一样)。如果我签入我的应用程序,那么启动它将花费太多时间(例如,10 MB大小的片段需要7分钟才能播放1分钟)
我的结论是,MediaPlayer首先从URL下载音频,然后开始播放。所以下载需要时间。
我希望它可以直接在媒体播放器内播放,而不是先下载。
URL类型:https://demo-podcast.s3.us-west-1.amazonaws.com/media/clips/41e7d280-cde1-4676-95ff-f7026ae6bdde.mp3
有人知道吗?提前谢谢!
编辑:这里是我的mediaplayer代码,我在recyclerview中使用它。
private fun attachMusic(data: ClipsResponse.ClipsResponseItem, binding: ItemLayoutCardBinding, mediaPlayer: MediaPlayer) {
binding.apply {
try {
mediaPlayer.setAudioAttributes(AudioAttributes.Builder().setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build())
mediaPlayer.setDataSource(data.audioUrl)
mediaPlayer.prepare()
setControls(this, mediaPlayer)
} catch (e: Exception) {
e.printStackTrace()
}
mediaPlayer.setOnCompletionListener {
btnPlay.setImageResource(R.drawable.ic_play_circle)
it.release()
}
}
}
private fun setControls(binding: ItemLayoutCardBinding, mediaPlayer: MediaPlayer) {
binding.apply {
seekBar.setMax(mediaPlayer.duration)
mediaPlayer.start()
playCycle(this, mediaPlayer)
if (mediaPlayer.isPlaying) {
btnPlay.setImageResource(R.drawable.ic_pause_circle)
playProgressBar.isVisible = false
)
}
seekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
if (fromUser) {
mediaPlayer.seekTo(progress)
}
}
override fun onStartTrackingTouch(seekBar: SeekBar) {}
override fun onStopTrackingTouch(seekBar: SeekBar) {}
})
}
}
private fun playCycle(binding: ItemLayoutCardBinding, mediaPlayer: MediaPlayer) {
val handler = Handler()
binding.apply {
try {
seekBar.setProgress(mediaPlayer.currentPosition)
if (mediaPlayer.isPlaying) {
val runnable = Runnable { playCycle(binding, mediaPlayer) }
handler.postDelayed(runnable, 100)
}
} catch (e: java.lang.Exception) {
e.printStackTrace()
}
}
}
请删除mediaPlayer。在代码中准备()并添加mediaPlayer。prepareAsync()
问题内容: 我不了解pyaudio的示例材料。看来他们写了整个小程序,这让我失望了。 如何只播放一个音频文件? 格式不是问题,我只想知道播放音频文件所需的最少代码。 问题答案: 这个例子对我来说似乎很清楚。您只需将示例另存为playwav.py调用即可: 带有一些额外注释的wave示例:
我对javascript和discord.js很陌生,有人知道如何让机器人加入一个频道,播放一个文件然后离开吗? 以下是我尝试过的: 现在,它将发送消息加入语音通道,而不管我是否在其中,如果我在其中,它就不会加入语音通道并播放文件。任何帮助都很感激。
我尝试建立一个按钮,一旦点击它播放一个音频文件,如果再次点击它停止它。在按钮中,有一个属性src,其中放置了应该播放的文件的路径。 null null 当我尝试单击该按钮时,日志显示“”。但音频已设置,警报显示文件路径在那里。 我做错了什么?
我尝试从res/raw文件夹播放音频文件,这是我用来播放文件的代码,这不会产生任何错误,并且我的设备音量最大,但没有任何声音。我尝试了MP3和WAV文件。 启动后我在 LogCat 上收到以下消息 帮助我解决这个问题,将不胜感激。
问题内容: 我正在寻找一种轻松播放远程 .mp3 文件的解决方案。我看过适用于本地文件的“ pyglet”模块,但似乎无法处理远程文件。我可以临时下载 .mp3 文件,但是由于 .mp3 文件看起来太大,因此不建议这样做。 我宁愿它用于跨平台而不是仅用于Windows等。 例如,播放来自以下位置的音频文件: http://example.com/sound.mp3 只需在下载文件时流式传输文件,我
函数名称: 播放音频 函数功能: 在后台播放指定的声音文件 函数方法 media.playAudio(path,vol,flag) 参数 类型 必填 说明 path string 是 音频文件名,支持 mp3、m4a、m4r、ogg、wav vol string 否 音频音量,不写默认,使用当前设置的音量 flag string 否 是否循环播放,不写默认为 false - 不循环,true -