android - #读取音频格式并产生声音
问题描述
我正在开发一个 android 媒体播放器,我需要使用 WAV 和 MP3 等音频格式。而且我需要在将文件读取为字节后产生声音。任何人都知道如何做到这一点或可以提供帮助!
注意:必须不使用 MediaPlayer 类或其他准备好的类,我需要将文件作为字节读取并产生声音。
解决方案
为什么不能使用 MediaPlayer?
也许尝试exoplayer。
https://developer.android.com/guide/topics/media/exoplayer
https://github.com/google/ExoPlayer
ExoPlayer的示例代码- 在 SD 卡中播放本地 mp4 文件
private void prepareExoPlayerFromFileUri(Uri uri){
exoPlayer = ExoPlayerFactory.newSimpleInstance(this, new DefaultTrackSelector(null), new DefaultLoadControl());
exoPlayer.addListener(eventListener);
DataSpec dataSpec = new DataSpec(uri);
final FileDataSource fileDataSource = new FileDataSource();
try {
fileDataSource.open(dataSpec);
} catch (FileDataSource.FileDataSourceException e) {
e.printStackTrace();
}
DataSource.Factory factory = new DataSource.Factory() {
@Override
public DataSource createDataSource() {
return fileDataSource;
}
};
MediaSource audioSource = new ExtractorMediaSource(fileDataSource.getUri(),
factory, new DefaultExtractorsFactory(), null, null);
exoPlayer.prepare(audioSource);
exoPlayer.setPlayWhenReady(true);
}
推荐阅读
- lisp - AutoCAD中块的自动尺寸标注
- ios - How to avoid a trail of delegate calls in a navigation stack?
- r - 从 R 上的 Gujarati 和 Porter 中的 logit 模型示例中复制边际效应
- c# - 了解 QuickGraph ShortestPathsDijkstra 结果
- c# - 与自定义对象的 C# 数据网格绑定
- c++ - 将 boost 变体与包含 bool 输入的 std::functions 一起使用
- amazon-s3 - 在 Clojurescript 中,如何使用 AWS javascript SDK 列出 S3 存储桶?
- nginx - nginx showing IP address instead of domain
- sql - PostgreSQL 中的动态透视
- android - 使用 IPC 的信使接口调用另一个应用程序(进程)服务