ExoPlayer - 播放 SD 卡中的本地 mp4 文件

新手上路,请多包涵

我正在使用 Exoplayer Demo 应用程序并想从 SD 卡预加载 MP4 视频。我已经尝试了 这篇文章 的实现,但它不起作用。在我的 exoplayer Demo 中没有名为 DemoUtil.java 的类。而是使用:

 public static final Sample[] LOCAL_VIDEOS = new Sample[] {
new Sample("Some User friendly name of video 1",
"/mnt/sdcard/video1.mp4", Util.TYPE_OTHER),
};

我也无法使用他们为 SampleChooserActivity.java 提到的代码片段。 (不断给我错误)

我改为使用:

 group = new SampleGroup("Local Videos");
group.addAll(Samples.LOCAL_VIDEOS);
sampleGroups.add(group);

我究竟做错了什么?每个设备的文件路径都会改变吗?

原文由 Meera Anand 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
1 个回答

还没有尝试演示应用程序,但我已经设法创建了自己的播放本地音频文件的示例并将其发布在这里: https ://github.com/nzkozar/ExoplayerExample

这是从文件 Uri 准备播放器的所有工作的主要部分:

 private void prepareExoPlayerFromFileUri(Uri uri){
        exoPlayer = ExoPlayerFactory.newSimpleInstance(this, new DefaultTrackSelector(null), new DefaultLoadControl());
        exoPlayer.addListener(eventListener);

        DataSpec dataSpec = new DataSpec(uri);
        final FileDataSource fileDataSource = new FileDataSource();
        try {
            fileDataSource.open(dataSpec);
        } catch (FileDataSource.FileDataSourceException e) {
            e.printStackTrace();
        }

        DataSource.Factory factory = new DataSource.Factory() {
            @Override
            public DataSource createDataSource() {
                return fileDataSource;
            }
        };
        MediaSource audioSource = new ExtractorMediaSource(fileDataSource.getUri(),
                factory, new DefaultExtractorsFactory(), null, null);

        exoPlayer.prepare(audioSource);
    }

您可以这样获取 Uri: Uri.fromFile(file)

如上所示准备好要播放的文件后,您只需调用 exoPlayer.setPlayWhenReady(true); 即可开始播放。

对于视频文件,您可能只需要将表面视图附加到 exoPlayer 对象,但我还没有真正使用 ExoPlayer2 完成此操作。

原文由 ak93 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题