首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获得持续时间的音频需要8-10秒,获得它的最佳方法是什么?

获得持续时间的音频需要8-10秒,获得它的最佳方法是什么?
EN

Stack Overflow用户
提问于 2017-04-08 17:55:03
回答 2查看 119关注 0票数 0

我有一个循环,其中有一个mp3文件的过滤器,但是当我想要获得文件的持续时间为8-10秒时,我尝试了Mediaplayer.create,get.Duration,MediaMetadaretrieve和Mediaplayer.setDatasource.get.Duration,但是他们花费了8-10秒,除了会崩溃的Mediaplayer.setDatasource之外,

代码语言:javascript
复制
File scan;
File[]list;
String song_path;
int posicion;
int minutes;
int seconds;
ArrayList<String>Song_list=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    TextView text=(TextView)findViewById(R.id.text);
    metada=new MediaMetadataRetriever();

    scan= Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC);
    list=scan.listFiles();

    for(File files:list){
        if(files.getName().endsWith("mp3")){
            song_path=String.valueOf(files.getAbsolutePath());
            Song_list.add(song_path);

            metada.setDataSource(MainActivity.this,Uri.parse(song_path));
            String dutation=metada.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
            posicion=Integer.parseInt(dutation)/1000;
            minutes=posicion/60;
            seconds=posicion%60;
            text.setText(minutes+":"+seconds+text.getText());

            /*player=MediaPlayer.create(MainActivity.this,Uri.parse(song_path));
            posicion=player.getDuration()/1000;
            minutes=posicion/60;
            seconds=posicion/60;
            text.setText(minutes+":"+seconds+text.getText());*/
        }
    }

}

}

我知道代码Media.create和metada.extracMetada是他们花了很多时间,谢谢大家的关注

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-08 18:02:55

您可以使用AudioFileIO Java类读取和撤回文件数据。

在For循环中,您可以使用以下方法:

代码语言:javascript
复制
    AudioFile myMp3 = AudioFileIO.read(files);
   duration = myMp3.getAudioHeader().getTrackLength(); 
票数 0
EN

Stack Overflow用户

发布于 2017-04-08 18:05:42

我建议您使用ExoPlayer,它也是由Android编写的,在获取音频mp3文件的持续时间上花费的时间要短得多。它更好的实现和播放文件从url以及本地文件。此外,您还可以为任何视图定制它,并有各种类型的侦听器。https://developer.android.com/guide/topics/media/exoplayer.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43298464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档