ExoPlayer 是一个开源的、可扩展的 Android 平台媒体播放器,它支持广泛的音频和视频格式。当你遇到 ExoPlayer 从 URL 返回 MP3 文件的负值持续时间时,这通常意味着播放器在解析媒体文件时遇到了问题。
MP3 文件的持续时间信息通常存储在文件的元数据中。ExoPlayer 使用这些元数据来确定文件的播放时长。如果这个信息不正确或损坏,播放器可能会读取到一个负值或不正确的持续时间。
MediaSource
和 MediaPeriod
类来实现。以下是一个简单的示例,展示如何在 ExoPlayer 中手动设置 MP3 文件的持续时间:
// 创建一个 MediaSource
MediaSource mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory)
.createMediaSource(uri);
// 获取播放器实例
SimpleExoPlayer player = new SimpleExoPlayer.Builder(context).build();
// 准备播放器
player.prepare(mediaSource);
// 手动设置持续时间(假设你知道正确的持续时间)
long durationMs = 123456; // 替换为正确的持续时间(以毫秒为单位)
player.setDuration(durationMs);
// 开始播放
player.play();
通过上述方法,你应该能够解决 ExoPlayer 返回 MP3 文件负值持续时间的问题。如果问题仍然存在,建议查看 ExoPlayer 的官方论坛或社区,以获取更多帮助和支持。
领取专属 10元无门槛券
手把手带您无忧上云