抖音开放平台Logo
开发者文档
控制台
  • API 概览
  • 开放能力
  • 基础
  • 渲染
  • 设备
  • 文件
  • 位置
  • 媒体
  • 图片
  • 音频
  • tt.addAudioTrack
  • tt.createInnerAudioContext
  • tt.getAudioContext
  • InnerAudioContext
  • AudioContext
  • 录屏
  • 麦克风
  • 相机
  • 录音
  • 视频
  • 人脸检测
  • 手势识别
  • 网络
  • 游戏转发分享
  • 实时语音
  • 数据缓存
  • 系统
  • 广告
  • 界面
  • 支付
  • Worker
  • tt.addAudioTrack
    收藏
    我的收藏

    基础库 2.16.0 开始支持本方法,这是一个异步方法。

    调用本方法可为本地视频添加额外的音轨。

    前提条件
    业务背景
    使用限制
    注意事项
    相关教程

    语法

    tt.addAudioTrack(options)

    参数说明

    options 为 object 类型,属性如下:

    属性名类型默认值必填说明最低支持版本
    videoPathstring
    要混合的视频路径
    2.16.0
    audioParamArray<object>
    要混合的音频属性,支持大部分音频格式和 mp4
    2.16.0
    successfunction
    接口调用成功的回调函数
    2.16.0
    failfunction
    接口调用失败的回调函数
    2.16.0
    completefunction
    接口调用结束的回调函数(调用成功、失败都会执行)
    2.16.0

    audioParam 类型说明

    object 类型,属性如下:

    属性名类型默认值必填说明最低支持版本
    audioPathstring
    要混合的音频路径
    2.16.0
    audioRangeArray<number>
    结构为[start:number, end:number]。要混合的音频自身的入点,出点,即选择哪一段音频进行混合 (单位为毫秒)
    2.16.0
    videoRangeArray<number>
    结构为[start:number, end:number]。要混合的视频自身的入点,出点,即要往哪一段视频混合(单位为毫秒) ,建议 audioRange 与 videoRange 保持一致
    2.16.0

    回调成功

    object 类型,属性如下:

    属性名类型说明最低支持版本
    errMsgstring
    "addAudioTrack:ok"
    2.16.0

    回调失败

    object 类型,属性如下:

    属性名类型说明最低支持版本
    errMsgstring
    "addAudioTrack:fail" + 详细错误信息
    2.16.0

    返回值

    返回值为 object 类型,详细参数描述如下:

    属性名类型说明最低支持版本
    onProgressUpdatefunction
    进度更新回调函数, 入参类型是 { progress: number }, 表示进度
    2.16.0

    错误码

    errorCodeerrMsgerrorType说明最低支持版本
    999987The host environment does not support audio mixingD
    2.16.0
    999999invalid paramsD
    addAudioTrackStateChange
    2.16.0
    999991internal errorF
    小游戏框架内部错误,有需要请创建工单咨询
    2.16.0
    999987feature not supportD
    2.16.0
    999999invalid paramsD
    2.16.0
    117501pre task is still in progressD
    2.16.0
    999999invalid paramD
    2.16.0

    代码示例

    let recoerderVideoPath; function mixAudioTrack() { const task = tt.addAudioTrack({ videoPath: recoerderVideoPath, // 录屏后文件的路径 audioParams: [ { audioPath: "ttfile://user//xx.MP3", // 这里填音频的路径 audioRange: [0, 10000], // 音乐自身的入点,出点,可以填视频的duration videoRange: [0, 10000], // 视频自身的入点,出点。这里表示将音频的前10s,与视频的前10s进行混合。 }, ], success(res) { tt.showModal({ title: "混合成功", content: JSON.stringify(res), }); tt.shareAppMessage({ channel: "video", extra: { videoPath: res.videoPath, }, success() { tt.showModal({ title: "分享成功", }); }, fail(e) { tt.showModal({ title: "分享失败", }); }, }); }, fail(res) { tt.showModal({ title: "混合失败", content: JSON.stringify(res), }); }, }); task.onProgressUpdate((res) => { console.log("progress: " + res.progress); tt.showToast({ title: JSON.stringify(res.progress), }); }); } tt.onTouchEnd((res) => { const recorder = tt.getGameRecorderManager(); recorder.onStop((res) => { console.log(res.videoPath); recoerderVideoPath = res.videoPath; mixAudioTrack(); }); recorder.start(); setTimeout(() => { recorder.stop(); }, 15000); });