当前位置: 首页 > 知识库问答 >
问题:

Android ExoPlayer-无法使用MediaItem从本地存储加载音频

姬振
2023-03-14

我使用ExoPlayer2.14.1播放短音频文件,方法如下:

val player = SimpleExoPlayer.Builder(context, fftAudioRendererFactory).build()
player.setMediaItem(MediaItem.fromUri(uri))
player.prepare()

当我从URL加载音频时(https://...myfile.aac),它可以正确播放。但是,当我尝试从本地存储中的文件加载相同的音频时:

/data/user/0/my.app.name/cache/audios/myfile.aac

文件无法加载。我得到以下警告:

MessageQueue: Handler(android.os.Handler){5b7060e}将消息发送到死线上的Handlerjava.lang.IllegalStateExc0019: Handler(android.os.Handler){5b7060e}将消息发送到android.os.的死线上的HandlerMessageQueue.enqueue消息(MessageQueue.java:560)在android.os.Handler.enqueue消息(Handler.java:778)在android.os.Handler.sendMessageAtTime(Handler.java:727)在android.os.Handler.sendMessageDelayed(Handler.java:697)atandroid.os.Handler.sendMessage(Handler.java:635)atandroid.os.Message.sendToTarget(Message. java: 468)at com. google. android. exoplayer2.准备(ExoPlayerimplified. java: 283)

我尝试了不同的文件URI,如file:/file:///,但没有任何帮助。有什么提示吗?

共有1个答案

颜修为
2023-03-14

解决了!

正如ExoPlayer文档所说的。aac文件有必要设置恒定的比特率搜索。为了做到这一点,我必须创建SimpleExoPlayer与ExtractorsFactory参数如下:

private val extractorsFactory = DefaultExtractorsFactory().setConstantBitrateSeekingEnabled(true)
private val player = SimpleExoPlayer.Builder(context, extractorsFactory).build()

由于某些原因。从url(https)加载的aac文件不需要比特率查找设置——也许它在中间做了一些转换。

 类似资料:
  • 我正在做一些测试工作,需要使用JUnit中的特性,这些特性对我来说是陌生的。为了更好地理解这些特性,我希望能够查看IntelliJ中的JUnit源代码以及我的项目。 这个项目使用Maven。我在pom.xml文件中列出了jUnit的以下依赖项: 当我在命令行上运行“MVN clean Install”时,jUnit源代码会从我公司的Maven存储库下载到我本地的Maven存储库(.m2目录)中。然

  • 我需要从一个URL加载图像,并将它们存储在本地,这样它们就不必反复重新加载。我有一个扩展我正在工作: 我遇到了一个问题,UIImagePNGRepresentation中的“loadedImage”返回时出现错误“use of unresolved identifier loadedImage”。我的目标是在本地存储图像的PNG表示。对此错误的任何建议将不胜感激。

  • 当尝试将本地hadoop与AZURE BLOB存储(即将BLOB存储用作HDFS)连接到hadoop版本-2.7.1时,它引发异常 和blob存储在core-site.xml中的键值。 在列出文件或对blob存储进行HDFS操作时,将follwing异常获取为 任何人请指导我解决以上问题。

  • 我已经成功地与另一位现场开发人员一起使用GitLab,开发了C和MATLAB中的小型项目。 在家使用VPN工作时,我将一个大型LabVIEW程序推到了一个新项目中,这样我就可以与另一个非现场开发人员一起工作。开发人员克隆了该项目,并开始开发一个分支。 问题是我无法提取/获取此分支。GitLab正在显示开发人员所做的分支和提交。 我使用git的时间不长,所以我可能只是太傻了。 Git推送:“致命的‘

  • 我觉得问这个问题很愚蠢,但我似乎无法为使用GAE的项目清除本地数据存储。我咨询了以下SE问题: 如何删除Google App Engine中的所有数据存储 我也看过这些文档,其中的命令似乎非常明确。我可以导航到,然后运行 然而,我不断收到一个错误,说明我的应用程序没有这样的文件或目录。 我确信我为我的应用程序输入了正确的名称,因为它与我的文件中的名称相匹配,与我的项目在本地的文件夹相匹配,并且与G

  • 在上一节,我们完成了编写一个简易的Sniffer的第一步——数据捕获。 很多时候,我们需要将捕获的数据先保存到磁盘上,之后再使用工具或者自己编写代码来进行详细分析。 本节我们在上一节的基础上来讲解保存捕获数据的方式,当然使用tcpdump或者WireShark都可以 很方便的存储数据包。 4.2.1 使用pcapy保存和读取数据 前文我们使用 pcapy的open_live方法,可以获取pcapy