AndroidAudioConverter的使用,之前一直使用的音频转换工具类
依赖:implementation ‘com.github.adrielcafe:AndroidAudioConverter:0.0.8’
// IConvertCallback callback = new IConvertCallback() {
// @Override
// public void onSuccess(File convertedFile) {
// cancelLoading();
//
// showMessage("文件已保存:"+convertedFile.getAbsolutePath());
// }
// @Override
// public void onFailure(Exception error) {
// cancelLoading();
// Log.e("CZH","error"+error);
// showMessage("转换失败:"+error);
// }
// };
// AndroidAudioConverter.with(this)
// .setFile(file) // Your current audio file
// .setFormat(audioFormat) // Your desired audio format
// .setCallback(callback) // An callback to know when conversion is finished
// .convert(); // Start conversion
现在在android10中转换时无法转换,提示java.io.IOE…:
在android8上就可以。
然后没有一点提示错误在哪,害我搁那试错半天。
看源码中其实也就是使用FFmpeg的封装,正好我也有集成FFmpeg4.4。想想会不会是版本原因
依赖: implementation ‘com.arthenica:mobile-ffmpeg-full:4.4’
就直接把实现代码搬过来用了。然后就可以转换格式了
下面是AndroidAudioConverter源码:
下面是执行方法搬过来后的代码
showLoading("转换中...(时间可能较长,请耐心等待)");
File convertedFile = getConvertedFile(file, audioFormat);
Observable.just(1)
.map(new Function<Integer, String>() {
@Override
public String apply(Integer integer) throws Exception {
//主要就是这句cmd
String[] cmd = new String[]{"-y", "-i", file.getPath(), convertedFile.getPath()};//源码
int res = FFmpeg.execute(cmd);
if (res != 0) {
throw new Exception("转换失败");
}
return convertedFile.getAbsolutePath();
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
showLoading();
}
@Override
public void onNext(String s) {
cancelLoading();
showMessage("保存成功:" + s);
finish();
}
@Override
public void onError(Throwable e) {
cancelLoading();
showMessage(e.getMessage());
}
@Override
public void onComplete() {
}
});
private static File getConvertedFile(File originalFile, AudioFormat format){
String[] f = originalFile.getPath().split("\\.");
String filePath = originalFile.getPath().replace(f[f.length - 1], format.getFormat());
return new File(filePath);
}
支持转换的类型:MP3, M4A,AAC,WMA,WAV,FLAC
题外:因为太忙(要打游戏),所以更新android studio使用得后面有空了。哈哈哈哈