AndroidAudioConverter,音频格式无法转换问题

16 篇文章 0 订阅
4 篇文章 0 订阅

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使用得后面有空了。哈哈哈哈

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值