2017-09-02 89 views
0

我想從手機播放媒體到ExoPlayer。 我正在從ExoPlayer:Uri:無法加載本地媒體Android

的路徑Environment.getExternalStorageDirectory()。getAbsoluteFile();

每當我嘗試播放媒體 - 我得到這個錯誤 -

源錯誤

com.google.android.exoplayer2.upstream.HttpDataSource $ HttpDataSourceException: 無法連接到/存儲/模擬/ 0 /下載/ big_buck_bunny_720p_1mb.mp4

也,

所致:java.net.MalformedURLException:沒有協議:/storage/emulated/0/Download/big_buck_bunny_720p_1mb.mp4

我路過這裏 - 烏里

MediaSource mediaSource = buildMediaSource(Uri.parse(link)); 

這種方法是使用URI-

private MediaSource buildMediaSource(Uri uri) { 
    DataSource.Factory dataSourceFactory = new 
DefaultHttpDataSourceFactory("ua", BANDWIDTH_METER); 
    DashChunkSource.Factory dashChunkSourceFactory = new 
DefaultDashChunkSource.Factory(dataSourceFactory); 
    return new DashMediaSource(uri, dataSourceFactory, 
dashChunkSourceFactory, null, null); 
} 

這就是我如何得到鏈路

arrayList1 = video(Environment.getExternalStorageDirectory().getAbsoluteFile()); 

protected ArrayList<File> video(File file) { 

    File[] filename = file.listFiles(); 

    ArrayList<File> arrayList2 = new ArrayList<File>(); 

    try { 

     for (File file1 : filename) { 

      if (file1.isDirectory()) { 

       arrayList2.addAll(video(file1)); 

      } else { 
       if (file1.getName().endsWith(".mp4")) { 

        arrayList2.add(file1); 

       } 


      } 


     } 
    }catch (Exception e){ 

    } 

    return arrayList2; 


} 
+0

請提供[MCVE]展示你是如何創建'Uri'和將其交給ExoPlayer。 – CommonsWare

+0

@CommonsWare我已編輯帖子 –

+0

停止使用'Uri.parse()'。使用'Uri.fromFile()'。 – CommonsWare

回答

0

使用FileDataSource 。 ///android_asset/video.mp4或其他文件的URI:下面的代碼段用於MP4從資產的URI,如文件創建一個MediaSource的

private MediaSource buildMediaSource(Uri uri) { 
    DataSource.Factory dataSourceFactory = new FileDataSourceFactory(); 
    return new ExtractorMediaSource(uri, dataSourceFactory, 
     new DefaultExtractorsFactory(), null, null); 
    }