Skip to content

Go SDK 接入 ​

Go SDK 可以查询录像日期和时间段、回放多路录像、取得解码或编码媒体帧、截图、保存播放片段,并把指定范围独立导出为 MP4。

确认运行环境 ​

  • Go 1.25;
  • CGO_ENABLED=1;
  • Apple Silicon,macOS 11.5 或更高版本;
  • Linux x86_64,glibc 运行环境,要求 GLIBC_2.35、GLIBCXX_3.4.30、CXXABI_1.3.9 或更高版本,不支持 Alpine/musl;
  • 构建时需要本机 C 工具链;Linux 还需要 patchelf,macOS 需要 Xcode Command Line Tools。

SDK 使用 AccessKeyId 和 AccessKeySecret 托管鉴权。只在能够妥善保管应用密钥的运行环境中使用,不要把密钥打包到浏览器、移动 App 或交付给终端用户的程序中。

添加 SDK 与构建工具 ​

bash
go get github.com/tangeai/tirtc-client-go/v2
go get -tool github.com/tangeai/tirtc-client-go/v2/cmd/tirtc-build
go tool tirtc-build build --output dist/bin/app ./cmd/app

tirtc-build 会运行 go build,并把可执行文件和 Native 依赖整理到同一个部署目录。运行和部署时保留整个 dist/。

创建 Client 并查询录像 ​

Ti 云存 API 位于 storage 子 package。每次查询、回放和导出都显式传入目标 deviceID。SDK 会按需为设备签发和刷新短期 Token。

go
package main

import (
	"context"
	"fmt"
	"time"

	"github.com/tangeai/tirtc-client-go/v2/storage"
)

func listRecordings(ctx context.Context, deviceID string) error {
	client, err := storage.NewClient(storage.ClientOptions{
		AppID:           appID,
		AccessKeyID:     accessKeyID,
		AccessKeySecret: accessKeySecret,
		CacheDir:        "/var/lib/my-app/tirtc-cache",
	})
	if err != nil {
		return err
	}
	defer client.Close()

	end := time.Now().UTC()
	start := end.Add(-24 * time.Hour)
	ranges, err := client.ListRecordings(ctx, deviceID, start, end)
	if err != nil {
		return err
	}
	for _, recording := range ranges {
		fmt.Printf("%s - %s\n", recording.StartTime, recording.EndTime)
	}
	return nil
}

AppID、AccessKeyID、AccessKeySecret 和 CacheDir 必填;CacheDir 必须是可写绝对路径。普通接入省略 Endpoint,使用 SDK 内置的正式服务地址。只有在开通时收到其他服务地址,才把交付的完整地址原样传给 ClientOptions.Endpoint。

一个进程可以创建多个 Ti 云存 Client,并为它们使用不同的应用身份和 Endpoint。TiRTC 和 Ti 云存同时运行时,所有 Client 的 CacheDir 和 ConsoleLogEnabled 必须一致。

接入客户端诊断能力(推荐) ​

创建 Client 后,建议在开发阶段为应用预留日志上传入口。这样在需要平台协助诊断时,可以直接上传同一次复现的日志;入口设计、上传结果处理和可选的原始音视频诊断采集见接入客户端诊断能力。

选择后续能力 ​

正常退出可以调用 Client.Close 收拢所属查询、Export、Replay 和 Output。已经返回给应用的 RecordingFile 和 SnapshotFile 仍由应用保存或删除。

Ti 云存开发文档