抖音开放平台Logo
开发者文档
控制台

视频拍摄器
收藏
我的收藏

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

主动调用

主动调用是指通过 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();

Bug&Tip

  • Tip: 分享报错 "can not be shared without clicking by user"
  • Tip: 在抖音或其他 APP 中分享视频,可以在发布出去的视频中带上小游戏锚点(即左下角小游戏链接),但是需要保证当前小游戏已经发布存在线上版本,并且有在当前宿主上线,发布时选择默认发布,而非选择日常。发布完成后,可以使用其他账号(非发布视频账号)查看发布后视频,会带上锚点。因为系统策略原因,安卓和 IOS 建议分开查看。
该文档是否有帮助?