抖音开放平台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

    错误码

    errNoerrMsg说明最低支持版本
    10301The host environment does not support audio mixing
    2.16.0
    -2000invalid params
    addAudioTrackStateChange
    2.16.0
    10401internal error
    小游戏框架内部错误,有需要请创建工单咨询
    2.16.0
    10301feature not support
    2.16.0
    20000invalid params
    2.16.0
    21501pre task is still in progress
    2.16.0
    20001invalid param
    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); });