14

我正在尝试使用 ExoPlayer 而不是 MediaPlayer,因为 MediaPlayer 返回错误的 getCurrentPosition() 是一个常见错误,我需要一个替代品。

但是我在任何地方都找不到如何通过与 MediaPlayer 相同的文件路径打开本地文件的信息.setDataSource(String filepath)

谷歌没有任何示例,官方文档站点奇怪地在两台计算机上崩溃了我的 FireFox 浏览器

4

4 回答 4

10

可以修改github中的ExoPlayer demo app来播放本地文件。为此,请编辑https://github.com/google/ExoPlayer/blob/master/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java文件以添加新的视频集。

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

为此,请编辑https://github.com/google/ExoPlayer/blob/master/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java文件以添加新样本集。

sampleAdapter.add(new Header("Local Videos"));
sampleAdapter.addAll((Object[]) Samples.LOCAL_VIDEOS);
于 2015-04-21T05:27:36.623 回答
5

对 Srikanth Peddibhotla 的代码进行小的修改即可工作

文件的 Uri 字符串应该是“file:///mnt/sdcard/YourFilename.mp4”而不是Samples.java中的“/mnt/sdcard/YourFilename.mp4”

public static final Sample[] LOCAL_VIDEOS = new Sample[] {
new Sample("Some User friendly name of video 1",
 "file:///mnt/sdcard/video1.mp4", DemoUtil.TYPE_MP4),
new Sample("Some User friendly name of video 2",
"file:///mnt/sdcard/video2.mp4", DemoUtil.TYPE_MP4),
}; 

此外,将以下行添加到SampleChooserActivity.java

 sampleAdapter.add(new Header("Local Videos"));
 sampleAdapter.addAll((Object[]) Samples.LOCAL_VIDEOS);
于 2015-05-13T12:00:32.550 回答
1

使用 ExoPlayer 2.1 并从demo项目开始,您可以播放文件assets夹中的 mp3 文件,而无需修改任何 Java 代码,只需在assets文件夹中添加 mp3 文件并创建或修改json文件即可。从 ExoPlayerdemo项目开始:

  1. 将 mp3 文件放入文件demo/assets夹中(带有media.exolist.json)。

  2. 修改media.exolist.json或创建一个新文件,例如my.exolist.json包含一个或多个格式如下的条目:

{ "name": "Children's Songs", "samples": [ { "name": "Mary Had a Little Lamb", "uri": "asset:///mary1.mp3" }, { "name": "Itsy Bitsy Spider", "uri": "asset:///spider1.mp3" } ] },

(最后一个逗号假设后面会有另一个类别,例如Blues SongsJazz Songs等,有更多的 mp3 条目。最后一个类别后面没有逗号。)

下图显示了单击后的选择器活动屏幕Children's Songs

ExoPlayer 选择器活动

单击Mary Had a Little LambItsy Bitsy Spider播放 mp3。

于 2016-12-24T06:41:09.320 回答
0

谷歌这些天改变了一些变量名和类定义!以下不同的作品对我有用。

--- a/demo/src/main/java/com/google/android/exoplayer/demo/SampleChooserActivity.java
+++ b/demo/src/main/java/com/google/android/exoplayer/demo/SampleChooserActivity.java
@@ -30,6 +28,8 @@ import android.widget.ExpandableListView;
 import android.widget.ExpandableListView.OnChildClickListener;
 import android.widget.TextView;

 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -44,7 +44,12 @@ public class SampleChooserActivity extends Activity {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.sample_chooser_activity);
     final List<SampleGroup> sampleGroups = new ArrayList<>();
-    SampleGroup group = new SampleGroup("YouTube DASH");
+
+    SampleGroup group = new SampleGroup("test videos");
+    group.addAll(Samples.LOCAL_VIDEOS);
+    sampleGroups.add(group);
+
+    group = new SampleGroup("YouTube DASH");
     group.addAll(Samples.YOUTUBE_DASH_MP4);
     group.addAll(Samples.YOUTUBE_DASH_WEBM);
     sampleGroups.add(group);
diff --git a/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java b/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java
index 9f58528..9e86f99 100644
--- a/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java
+++ b/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java
@@ -248,6 +248,13 @@ import java.util.Locale;
         "http://vod.leasewebcdn.com/bbb.flv?ri=1024&rs=150&start=0", Util.TYPE_OTHER),
   };

+  public static final Sample[] LOCAL_VIDEOS = new Sample[] {
+          new Sample("Some User friendly name of video 1",
+                  "file:///mnt/sdcard/test1.mp4", Util.TYPE_OTHER),
+          new Sample("Some User friendly name of video 2",
+                  "file:///mnt/sdcard/test2.mp4", Util.TYPE_OTHER),
+  };
+
   private Samples() {}

 }
于 2016-02-01T20:52:19.393 回答