普通小游戏开发
API
开放能力
数据分析
视频拍摄器
多端支持

调起视频发布器

本文主要是通过代码示例来说明如何调起视频发布器。

主动调用

主动调用是指通过 tt.shareAppMessage 调起视频发布器,传入该方法的参数为 ShareParam 类型。

tt.shareAppMessage({
  title: "my title",
  channel: "video",
  extra: {
    videoTopics: ["test1 videoTopics", "test2 videoTopics"], // 抖音或头条小视频话题列表
    videoPath: "",
    withVideoId: true,
  },
  success(res) {
    tt.showModal({
      title: "分享成功",
      content: JSON.stringify(res),
    });
  },
  fail(e) {
    tt.showModal({
      title: "分享失败",
      content: JSON.stringify(e),
    });
  },
});

被动调用

被动调用是指通过 tt.onShareAppMessage 监听用户点击分享的行为,然后在回调函数中返回一个ShareParam对象。

tt.onShareAppMessage((res) => {
  console.log(res.channel); // 如果用户触发了视频发布器,channel值为"video"
  return {
    success: (res) => {
      console.log("分享视频成功");
    },
  };
});

被动调用时,不支持修改 ShareParam 的 channel 值。

设置视频话题

如果想在视频分享时加上一些话题,可以通过 extra 参数的 hashtag_list 字段设置:

tt.shareAppMessage({
  title: "my title",
  channel: "video",
  extra: {
    hashtag_list: ["custom tag 1", "custom tag 2"],
  },
});

只有抖音拍视频支持话题设置功能。

只有抖音拍视频支持传 title。

获取视频封面图

如果将 extra 参数的 withVideoId 字段设置为 true ,可以获得 videoId, 然后通过获取视频信息接口获取视频封面图。

tt.shareAppMessage({
  extra: {
    withVideoId: true,
  },
  success: (res) => {
    getVideoInfo(res.videoId);
  },
});

function getVideoInfo(id) {
  tt.request({
    url: "https://gate.snssdk.com/developer/api/get_video_info",
    method: "POST",
    data: {
      alias_ids: [id],
    },
    success: (res) => {
      if (res.data.data[0].video_info.cover_url) {
        console.log(res.data.data[0].video_info); // 包含 cover_url,还有其它字段
      } else {
        setTimeout(() => {
          getVideoInfo(id);
        }, 5000);
      }
    },
  });
}

当完成拍视频得到 videoId 后如果立即获取视频信息,因为服务端延迟一般是获取不到的,建议先将 videoId 存到服务端,稍后根据业务需要再调用接口获取视频信息;或者通过轮询的方式来获取。

视频分享成功后跳转到视频播放页

获得 videoId 后,可用于 tt.navigateToVideoView 方法,跳转到视频播放页。

tt.navigateToVideoView({
  videoId: res.videoId,
  fail: (res) => {
    console.log(res);
    // 可根据 res.errCode 处理失败case
  },
});

当完成拍视频得到 videoId 后如果立即跳转播放页,因为服务端延迟一般是会失败的,建议先将 videoId 存到服务端,稍后再根据业务需要跳转播放页面。

录屏分享

可以将录屏得到的文件,进行分享。

const recorder = tt.getGameRecorderManager();

recorder.onStop((res) => {
  console.log(res.videoPath);
  tt.shareAppMessage({
    title: "my title",
    channel: "video",
    extra: {
      videoPath: res.videoPath, //录屏后得到的文件地址
      withVideoId: true,
    },
    success(res) {
      tt.showModal({
        title: "分享成功",
        content: JSON.stringify(res),
      });
    },
    fail(e) {
      tt.showModal({
        title: "分享失败",
        content: JSON.stringify(e),
      });
    },
  });
});

recorder.stop();

常见问题

分享报错 "can not be shared without clicking by user"

点击纠错
评价此篇文档