2017-09-02 25 views
0

携帯電話からExoPlayerにメディアを再生しようとしています。 私はパスを取得していますExoPlayer:Uri:ローカルメディアを読み込めません。

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

は私がhere-

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

この方法では、これは私がリンク -

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

:///android_asset/video.mp4またはその他のファイルのURI:次のスニペットは、ファイルのような資産のURIからMP4のためMediaSourceのを作成し、それをExoPlayerに渡します。 – CommonsWare

+0

@CommonsWare投稿を編集しました –

+0

'Uri.parse()'の使用を中止します。 'Uri.fromFile()'を使用してください。 – CommonsWare

答えて

0

使用FileDataSourceを取得しています方法です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); 
} 

を使用しているURIを渡しています。 [MCVE]あなたは `Uri`を作成する方法を示すを提供してください

private MediaSource buildMediaSource(Uri uri) { 
    DataSource.Factory dataSourceFactory = new FileDataSourceFactory(); 
    return new ExtractorMediaSource(uri, dataSourceFactory, 
     new DefaultExtractorsFactory(), null, null); 
    } 
関連する問題