合作咨询
我们的专家服务团队将竭诚为您提供专业的合作咨询服务
- // 创建音频编辑管理类
- HuaweiAudioEditor mEditor = HuaweiAudioEditor.create(mContext);
- // 初始化Editor的运行环境
- mEditor.initEnvironment();
- // 创建时间线
- HAETimeLine mTimeLine = mEditor.getTimeLine();
- // 创建泳道
- HAEAudioLane audioLane = mTimeLine.appendAudioLane();
- // 泳道末尾添加音频资源
- HAEAudioAsset audioAsset = audioLane.appendAudioAsset("/sdcard/download/test.mp3", mTimeLine.getCurrentTime());
- // 示例参数
- IWaveFormCallback callback = new IWaveFormCallback() {
- @Override
- public void onProgress(int progress) {
- // 注意:
- // 1、此处理在波形解析过程中,不适合做耗时操作,若需要更新波形显示,建议另起线程异步更新
- // 2、此处的intervalLevel为波形缩放级别,startTime、endTime为获取波形的开始与结束时间点,请根据实际显示需要传相应的值
- // 3、若每次都默认整段音频长度,可能会影响波形展示效率
- // 获取波形数据
- audioAsset.updateVolumeObjects(currentRequestId, intervalLevel,
- startTime, endTime, new HAEAudioVolumeCallback() {
- @Override
- public void onAudioEnd() {
- // 获取波形数据
- CopyOnWriteArrayList<HAEAudioVolumeObject> receivedVolumeObjects =
- audioAsset.getAudioList();
- }
- @Override
- public void onAudioFail(int errorCode, String errorMsg) {
- // 获取波形数据失败
- }
- });
- }
- };
- List<String> validPath = new ArrayList<>();
- validPath.add("/sdcard/download/test.mp3");
- // 生成波形数据的缓存,耗时操作,建议在子线程中处理
- CountDownLatch latchCountdown = new CountDownLatch(validPath.size());
- WaveformManager.getInstance().generateWaveThumbnailCache(validPath, latchCountdown, callback);
- try {
- latchCountdown.await();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- boolean isSuccess = audioLane.splitAsset(audioAsset.getIndex(), splitPoint);
- // 删除泳道上选中的音频
- audioLane.removeAsset(index);
- // 设置音量
- boolean isSuccess = audioAsset.setVolume(volume);
- //设置音速音调
- boolean isSuccess = audioLane.changeAssetSpeed(audioAsset.getIndex(), speed, pitch);
- // 获取音速,音调
- float speed = audioAsset.getSpeed();
- float pitch = audioAsset.getPitch();
- // 设置淡入淡出
- boolean isSuccess = audioLane.setAudioAssetFade(audioAsset.getIndex(), fadeInTimeMs, fadeOutTimeMs);
- // 获取淡入淡出
- int inTime = audioAsset.getFadeInTimeMs();
- int outTime = audioAsset.getFadeOutTimeMs();
- mEditor.playTimeLine(mTimeLine.getStartTime(), mTimeLine.getEndTime());
- mEditor.pauseTimeLine();
- mEditor.playTimeLine(mTimeLine.getCurrentTime(), mTimeLine.getEndTime());
- // 获取历史记录管理器
- HistoryManager historyManager = HistoryManager.getInstance();
- // 创建撤销恢复结果接收回调
- HistoryCallback historyCallback = new HistoryCallback() {
- @Override
- public void success(String s) {
- // 撤销恢复的功能说明
- }
- @Override
- public void onFailed() {
- }
- };
- // 撤销上一步操作
- historyManager.undo(historyCallback);
- // 恢复被撤销的操作
- historyManager.redo(historyCallback);
- // 清除历史记录
- historyManager.clearHistory();
- // 导出回调
- HuaweiAudioEditor.ExportAudioCallback exportAudioCallback = new HuaweiAudioEditor.ExportAudioCallback() {
- @Override
- public void onCompileProgress(long time, long duration) {}
- @Override
- public void onCompileFinished() {}
- @Override
- public void onCompileFailed(int errCode, String errorMsg) {}
- };
- HuaweiAudioEditor.getInstance().setExportAudioCallback(exportAudioCallback);
- // 设置音频属性
- HAEAudioProperty audioProperty = new HAEAudioProperty();
- audioProperty.setEncodeFormat(audioFormat);
- audioProperty.setSampleRate(audioRate);
- audioProperty.setChannels(audioChannel);
- // 导出音频文件(耗时操作,建议在子线程中处理)
- HuaweiAudioEditor.getInstance().exportAudio(audioProperty, musicPath);
- WaveformManager.getInstance().cleanWaveThumbnailCache(validPath);
- mEditor.stopEditor();