uiiee 2019-11-10 06:53 采纳率: 0%
浏览 736

用google的exoplayer连续循环播放一个文件夹里的媒体。

用google的exoplayer连续循环播放一个文件夹里的媒体。文件夹里有些是媒体,也有些不是媒体。显然播放器要自动跳过那些无法播放的文件。mediasource应该怎么写才好?
能上代码最好

  • 写回答

1条回答 默认 最新

  • 明初啥都能学会 2024-04-10 22:58
    关注

    要使用 Google 的 ExoPlayer 连续循环播放一个文件夹里的媒体,并且自动跳过无法播放的文件,你可以按照以下步骤进行:

    1. 遍历文件夹:首先,你需要遍历文件夹,将其中的媒体文件路径收集起来。

    2. 创建 MediaSource:针对每个媒体文件,你需要创建一个对应的 MediaSource 对象。这个 MediaSource 用于告诉 ExoPlayer 如何获取和解码该媒体文件。

    3. 过滤不支持的文件:在创建 MediaSource 时,你可以添加一些判断逻辑,检查文件类型是否支持。如果不支持,则跳过该文件,不创建对应的 MediaSource 对象。

    下面是一个示例代码,演示如何实现上述步骤:

    // 创建 ExoPlayer 对象
    SimpleExoPlayer exoPlayer = new SimpleExoPlayer.Builder(context).build();
    
    // 遍历文件夹
    File folder = new File("/path/to/your/folder");
    File[] files = folder.listFiles();
    for (File file : files) {
        // 检查文件是否是媒体文件,这里可以根据文件的扩展名进行判断
        if (isMediaFile(file)) {
            // 创建 MediaSource
            MediaSource mediaSource = buildMediaSource(Uri.fromFile(file));
            // 添加到播放器中
            exoPlayer.addMediaSource(mediaSource);
        }
    }
    
    // 准备播放器
    exoPlayer.prepare();
    
    // 开始播放
    exoPlayer.setPlayWhenReady(true);
    

    在上面的代码中,isMediaFile(File file) 方法用于判断文件是否是媒体文件,你可以根据文件的扩展名来进行判断。buildMediaSource(Uri uri) 方法用于根据文件路径创建对应的 MediaSource 对象,你可以根据需要选择合适的 MediaSource 类型,如 ProgressiveMediaSourceHlsMediaSource 等。

    需要注意的是,ExoPlayer 并不直接支持文件夹的循环播放,你可能需要在播放完成时监听事件,并在事件中重新开始播放文件夹中的第一个媒体文件,从而实现连续循环播放。

    评论

报告相同问题?

悬赏问题

  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)