文档管理中心
我的
指南音频编辑服务音频编辑能力Android音频编辑原子能力SDK集成基础功能

基础功能

初始化环境

  1. 初始化音频编辑管理类、创建时间线以及需要的泳道。

    收起
    自动换行
    深色代码主题
    复制
    1. // 创建音频编辑管理类
    2. HuaweiAudioEditor
      mEditor
      = HuaweiAudioEditor.create(
      mContext
      );
    3. // 初始化Editor的运行环境
    4. mEditor
      .initEnvironment();
    5. // 创建时间线
    6. HAETimeLine
      mTimeLine
      =
      mEditor
      .getTimeLine();
    7. // 创建泳道
    8. HAEAudioLane
      audioLane
      =
      mTimeLine
      .appendAudioLane();

  2. 导入音乐。

    收起
    自动换行
    深色代码主题
    复制
    1. // 泳道末尾添加音频资源
    2. HAEAudioAsset
      audioAsset
      =
      audioLane
      .appendAudioAsset("
      /sdcard/download/test.mp3
      ",
      mTimeLine
      .getCurrentTime());

获取波形数据

收起
自动换行
深色代码主题
复制
  1. // 示例参数
  2. IWaveFormCallback
    callback
    = new IWaveFormCallback() {
  3. @Override
  4. public void onProgress(int progress) {
  5. // 注意:
  6. // 1、此处理在波形解析过程中,不适合做耗时操作,若需要更新波形显示,建议另起线程异步更新
  7. // 2、此处的
    intervalLevel
    为波形缩放级别,
    startTime
    、
    endTime
    为获取波形的开始与结束时间点,请根据实际显示需要传相应的值
  8. // 3、若每次都默认整段音频长度,可能会影响波形展示效率
  9. // 获取波形数据
  10. audioAsset
    .updateVolumeObjects(
    currentRequestId
    ,
    intervalLevel
    ,
  11. startTime
    ,
    endTime
    , new HAEAudioVolumeCallback() {
  12. @Override
  13. public void onAudioEnd() {
  14. // 获取波形数据
  15. CopyOnWriteArrayList<HAEAudioVolumeObject>
    receivedVolumeObjects
    =
  16. audioAsset
    .getAudioList();
  17. }
  18. @Override
  19. public void onAudioFail(int errorCode, String errorMsg) {
  20. // 获取波形数据失败
  21. }
  22. });
  23. }
  24. };
  25. List<String>
    validPath
    = new ArrayList<>();
  26. validPath.add("
    /sdcard/download/test.mp3
    ");
  27. // 生成波形数据的缓存,耗时操作,建议在子线程中处理
  28. CountDownLatch
    latchCountdown
    = new CountDownLatch(
    validPath
    .size());
  29. WaveformManager.getInstance().generateWaveThumbnailCache(
    validPath
    ,
    latchCountdown
    ,
    callback
    );
  30. try {
  31. latchCountdown
    .await();
  32. } catch (InterruptedException e) {
  33. e.printStackTrace();
  34. }

分割音乐

收起
自动换行
深色代码主题
复制
  1. boolean
    isSuccess
    =
    audioLane
    .splitAsset(
    audioAsset
    .getIndex(),
    splitPoint
    );

删除选中的音频

收起
自动换行
深色代码主题
复制
  1. // 删除泳道上选中的音频
  2. audioLane
    .removeAsset(
    index
    );

设置音量

收起
自动换行
深色代码主题
复制
  1. // 设置音量
  2. boolean
    isSuccess
    =
    audioAsset
    .setVolume(
    volume
    );

调节音速音调

收起
自动换行
深色代码主题
复制
  1. //设置音速音调
  2. boolean
    isSuccess
    =
    audioLane
    .changeAssetSpeed(
    audioAsset
    .getIndex(),
    speed
    ,
    pitch
    );
  3. // 获取音速,音调
  4. float
    speed
    =
    audioAsset
    .getSpeed();
  5. float
    pitch
    =
    audioAsset
    .getPitch();

设置淡入淡出

收起
自动换行
深色代码主题
复制
  1. // 设置淡入淡出
  2. boolean
    isSuccess
    =
    audioLane
    .setAudioAssetFade(
    audioAsset
    .getIndex(),
    fadeInTimeMs
    ,
    fadeOutTimeMs
    );
  3. // 获取淡入淡出
  4. int
    inTime
    =
    audioAsset
    .getFadeInTimeMs();
  5. int
    outTime
    =
    audioAsset
    .getFadeOutTimeMs();

播放、暂停播放、继续播放音频

  1. 播放音频。
    收起
    自动换行
    深色代码主题
    复制
    1. mEditor
      .playTimeLine(
      mTimeLine
      .getStartTime(),
      mTimeLine
      .getEndTime());
  2. 暂停播放音频。
    收起
    自动换行
    深色代码主题
    复制
    1. mEditor
      .pauseTimeLine();
  3. 继续播放音频。
    收起
    自动换行
    深色代码主题
    复制
    1. mEditor
      .playTimeLine(
      mTimeLine
      .getCurrentTime(),
      mTimeLine
      .getEndTime());

撤销恢复

收起
自动换行
深色代码主题
复制
  1. // 获取历史记录管理器
  2. HistoryManager
    historyManager
    = HistoryManager.getInstance();
  3. // 创建撤销恢复结果接收回调
  4. HistoryCallback
    historyCallback
    = new HistoryCallback() {
  5. @Override
  6. public void success(String s) {
  7. // 撤销恢复的功能说明
  8. }
  9. @Override
  10. public void onFailed() {
  11. }
  12. };
  13. // 撤销上一步操作
  14. historyManager
    .undo(
    historyCallback
    );
  15. // 恢复被撤销的操作
  16. historyManager
    .redo(
    historyCallback
    );
  17. // 清除历史记录
  18. historyManager
    .clearHistory();

导出音频

收起
自动换行
深色代码主题
复制
  1. // 导出回调
  2. HuaweiAudioEditor.ExportAudioCallback
    exportAudioCallback
    = new HuaweiAudioEditor.ExportAudioCallback() {
  3. @Override
  4. public void onCompileProgress(long time, long duration) {}
  5. @Override
  6. public void onCompileFinished() {}
  7. @Override
  8. public void onCompileFailed(int errCode, String errorMsg) {}
  9. };
  10. HuaweiAudioEditor.getInstance().setExportAudioCallback(
    exportAudioCallback
    );
  11. // 设置音频属性
  12. HAEAudioProperty
    audioProperty
    = new HAEAudioProperty();
  13. audioProperty
    .setEncodeFormat(
    audioFormat
    );
  14. audioProperty
    .setSampleRate(
    audioRate
    );
  15. audioProperty
    .setChannels(
    audioChannel
    );
  16. // 导出音频文件(耗时操作,建议在子线程中处理)
  17. HuaweiAudioEditor.getInstance().exportAudio(
    audioProperty
    ,
    musicPath
    );

释放资源

  1. 清除波形缓存。
    收起
    自动换行
    深色代码主题
    复制
    1. WaveformManager.getInstance().cleanWaveThumbnailCache(
      validPath
      );
  2. 释放编辑器环境,调用此接口后,需要重新调用create接口。
    收起
    自动换行
    深色代码主题
    复制
    1. mEditor
      .stopEditor();