在Android开发中,有时候需要处理语音播放逻辑,需要获取一个音频文件的总播放时长,方便处理相关的业务逻辑

这里,有两种情况,一种是音频文件放在手机存储目录下;另一种是音频文件在raw目录下,随APK编译打包

第一种,音频文件放在手机存储目录下

这里的filePath是指文件保存在手机目录的完整路径

/*** 获取音频文件的总时长大小** @param filePath 音频文件路径* @return 返回时长大小*/
public long getAudioFileVoiceTime(String filePath) {long mediaPlayerDuration = 0L;if (filePath == null || filePath.isEmpty()) {return 0;}MediaPlayer mediaPlayer = new MediaPlayer();try {mediaPlayer.setDataSource(filePath);mediaPlayer.prepare();mediaPlayerDuration = mediaPlayer.getDuration();} catch (IOException ioException) {LogUtil.i(TAG, ioException.getMessage());}if (mediaPlayer != null) {mediaPlayer.stop();mediaPlayer.reset();mediaPlayer.release();}return mediaPlayerDuration;
}

第二种,音频文件放在raw资源目录下

这里的rawId是指raw目录下资源文件id

比如raw目录下有个名称为abc.mp3音频文件,则传入rawId就是 R.raw.abc

/*** 获取音频文件的总时长大小** @param rawId raw资源文件ID* @return 返回时长大小*/
public long getRawFileVoiceTime(int rawId) {long mediaPlayerDuration = 0L;MediaPlayer mediaPlayer = new MediaPlayer();try {Uri uri = Uri.parse("android.resource://"+getContext().getPackageName()+"/"+ rawId);mediaPlayer.setDataSource(BaseApplication.getContext(), uri);mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);mediaPlayer.prepare();mediaPlayerDuration = mediaPlayer.getDuration();} catch (Exception exception) {LogUtil.i(TAG, exception.getMessage());}if (mediaPlayer != null) {mediaPlayer.stop();mediaPlayer.reset();mediaPlayer.release();}return mediaPlayerDuration;
}

Android获取mp3音频文件总播放时长大小相关推荐

  1. Android获取mp3音频文件播放总时长

    Android获取mp3音频文件播放总时长 一般是需要文件的绝对路径,需要读取文件,转成媒体类解析,最好获取播放时长,然后关闭资源. /** * 获取音频文件的总时长大小 * * @param fil ...

  2. 用Python的mutagen模块获取MP3音频文件的时长

    工作中碰到的需求,今天下午虽然解决了,但是不太简洁(本质上还是用的mutagen...),回家查了查试了试,用mutagen可以很容易获取MP3音频文件的长度, 一共三行代码 from mutagen ...

  3. java 使用mediainfo_使用mediainfo工具统计每个视频文件(媒体文件)播放时长

    需求 1.运营那边需要统计大量视频文件的播放时长,并汇总记录到excel表中,问我有什么方法搞定 这边搜索了很多统计媒体文件时长的,主要有以下几种 1.使用java获取 2.使用python获取 3. ...

  4. Python获取mp3音频文件时长方法汇总

    '''pymediainfo: pip3 install pymediainfo 版本:5.1.0不支持网络音频 ''' class pymediainfoTest():@classmethoddef ...

  5. android 获取手机中应用运行的时长和次数

    android5.0用UsageStatsManager来获取程序运行时间 本来想用PkgUsageStats来获取的,后来看到有人说5.0以后可以直接用UsageStatsManager来获取信息, ...

  6. java 上传mp3文件大小,Java获取音频文件(MP3)的播放时长

    最近的一个项目需要按照时间播放mp3文件,例如,播放10分钟的不同音乐. 这就意味着我得事先知道mp3文件的播放时长,以决定播放几遍这个文件. 方案一:Java的方式 找第三方的库,真的感谢这些提供j ...

  7. 音频通道数、采样频率、采样位数、采样个数(样本数)的概念及计算一帧音频的大小、每秒播放的音频字节大小、一帧的播放时长、音频重采样

    对于下面data和linesize的解释(参考下面3.4中的av_samples_alloc_array_and_samples函数说明): 1)data是通道的意思,例如双通道,data[0]代表左 ...

  8. php 获取视频首帧,PHP获取视频的第一帧与时长

    //获得视频文件的缩略图 function getVideoCover($file,$time,$name) { if(empty($time))$time = '1';//默认截取第一秒第一帧 $s ...

  9. Android 播放raw文件夹下音频文件,本地MP3文件播放,播放云端MP3文件,获取MP3文件播放时长

    1.复制音频文件到raw文件夹下 2.实例化音频文件 private final MediaPlayer.OnCompletionListener beepListener = new MediaPl ...

  10. Android 入门第九讲01-音频(本地音乐播放,暂停,继续播放,获取播放时间,快进到指定位置,变速播放,播放data/data/目录下的音频文件,播放网络歌曲)

    Android 入门第九讲01-音频(本地音乐播放,暂停,继续播放,获取播放时间,快进到指定位置,变速播放,播放data/data/目录下的音频文件,播放网络歌曲) 准备 1.储存在raw文件夹 2. ...

最新文章

  1. Blender钢铁机器人建模与动画全流程制作视频教程
  2. stm32难不难学,没学51单片机可以直接学STM32吗?
  3. python类变量继承_python 类的成员及继承
  4. Boost: 对uncaught_exceptions函数的测试
  5. eclipse CTRL+F Find/Replace使用正则表达式
  6. 30个Python极简代码,10分钟get常用技巧!
  7. 安卓阵营最强Soc!骁龙898即将亮相:小米12系列本月底前后首发
  8. Linux抓包工具tcpdump例子
  9. 【java学习之路】(java SE篇)013.lambda表达式
  10. delphi xe6 让 ListView 在 Android 可回弹[根据龟山阿卍原创修改为xe6版本]
  11. 投资人教你怎么写能拿到钱的商业计划书
  12. 魅族手机Root之后如何恢复
  13. Excel求和怎么操作?如何运用sum函数进行求和
  14. DataV构建大屏(全屏)数据展示页面
  15. html5 swipejs,移动web最简洁的滑动效果Swipe JS(适合初学者)
  16. 计算机主机清理步骤,教你4个C盘清理方法,去掉电脑90%垃圾文件
  17. linux cp命令的-f 参数
  18. 如何使用 Docker Buildx Bake 创建复杂的镜像构建管道
  19. java堆和栈分别存什么类型_栈、堆、方法区分别存储什么内容
  20. 课程设计每日总结0820

热门文章

  1. 马士兵老师Java虚拟机调优
  2. 一键去除AutoCAD图形乱码的问题
  3. linux中睡眠命令,linux sleep命令详解
  4. Windows Azure AppFabric Caching入门简介
  5. 自动驾驶汽车传感器——摄像头
  6. FastStone Capture7.0注册码
  7. 台式计算机硬件组装应按什么步骤顺序进行,计算机硬件组装正确步骤
  8. Case when的用法
  9. 用Unity3D实现打飞碟游戏
  10. html 语言包,语言包编辑