gpt4 book ai didi

android - 如何播放不在 url 或存储中的音频文件的 InputStream?

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:59:44 25 4
gpt4 key购买 nike

背景

我已成功将音频文件 (3gp) 上传到 Google 云端硬盘。

现在我希望能够在应用程序中播放该文件。

Google Drive API 只允许获取存储在那里的文件的输入流。

问题

输入的所有 MediaPlayer 功能在我的情况下都不可用,只有 InputSteam:

http://developer.android.com/reference/android/media/MediaPlayer.html#setDataSource(java.io.FileDescriptor)

我知道我可以将 Google 云端硬盘中的文件保存到缓存中并播放它,但我想避免存储处理,并即时播放文件。

我尝试过的

我试图搜索这个问题,只发现使用 AudioTrack ( here ) 可能是可行的。也可以使用新的 Jelly-Bean 功能(显示 here ,从 here 中找到),但我不确定,因为它的级别很低。

遗憾的是,使用 AudioTrack 我播放了错误的声音(噪音)。

我还注意到 MediaPlayer 可以选择将数据源设置为 MediaDataSource ( here ),但不仅我不确定如何使用它,它还需要 API 23 及更高版本。

当然,我尝试使用 Google-Drive 中提供的 url,但这仅用于其他目的,并没有定向到音频文件,因此不能通过 MediaPlayer 使用。

问题

给定一个 InputStream,是否可以使用 AudioTrack 或其他东西来播放音频 3gp 文件?

是否有针对此的支持库解决方案?

最佳答案

如果您的 minSdkVersion 为 23 或更高,您可以 use setDataSource(MediaDataSource)并提供您自己的 abstract 子类 MediaDataSource class .

对于旧设备,您应该能够使用从 ParcelFileDescriptor 创建的管道。您将有一个线程将数据写入管道的末端,并将播放器末端的 FileDescriptor(来自 getFileDescriptor())传递给 setDataSource(FileDescriptor )

关于android - 如何播放不在 url 或存储中的音频文件的 InputStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36552381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com