android - 使用 Exoplayer2,如何始终使用默认插图(即使音频嵌入了插图?)

标签 android exoplayer exoplayer2.x albumart

我的 Android 应用程序有大量远程托管的媒体文件(通过 AWS),其中一些包含嵌入式艺术品。在播放任何这些音频媒体时,我希望使用我的默认插图(在没有嵌入插图时使用)。 我试过了

app:use_artwork="false"
app:default_artwork="@drawable/backgroundimage"

但与 Javadocs 似乎暗示的结果相反,我当然只是得到一个黑色背景。 (use_artwork="false"似乎真的意味着“不使用艺术作品”——而 Javadocs 暗示更多的意思是“不使用嵌入式 ID3 艺术作品”)

没有下载数 GB 的媒体文件并对它们进行批量操作(这是一个问题,因为文件通常是动态添加的),是否有一种解决方案可以抑制嵌入的艺术作品并使用我的背景?

四处寻找,我找到了 https://github.com/mpatric/mp3agic ,但这里的问题是文件是通过 Exoplayer 流式传输的,而不是下载供我以编程方式操作。

最佳答案

在浏览了一些 Exoplayer 源代码之后,这就是我的想法。这不是绝对理想,因为嵌入图像在被替换之前会快速闪烁,但我认为这只是移动逻辑以找到最佳位置的问题。

我删除了 app:use_artwork="false" 来 self 的 activity_main.xml

在我的 BroadcastReceiver 中,在“trackChanged”事件发生时, 我添加了这个(类似于 Exoplayer 库本身内部所做的):

Bitmap artWork = BitmapFactory.decodeResource(getResources(), R.drawable.backgroundimage);
ImageView aw = (ImageView) findViewById(R.id.exo_artwork);
aw.setImageBitmap(artWork);
aw.setVisibility(View.VISIBLE);

关于android - 使用 Exoplayer2,如何始终使用默认插图(即使音频嵌入了插图?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58160059/

相关文章:

Android WebView 在重定向中丢失 Cookie

android - float 操作按钮的定位

android - 从android中的电话簿中选择一个联系人

android - 将 android.media.Image 绘制到表面

android - ExoPlayer PlayerView OnClickListener 不工作

android - 为什么我的 Exoplayer2 CacheDataSource 没有将下载的流写入指定的缓存?

java - 如何链接旋转动画?

android - 我如何让 ExoPlayer 在我的 Activity 的 onStart() 方法中恢复视频?

android - 更改playerNotificationManager的操作图标,例如播放/暂停/停止

android-recyclerview - 在 RecyclerView 中释放并重新初始化 exoplayer 的最佳方式