小白项目求助,大文件如何直传第三方 API,不经过自己中转站服务器,同时保留自有账号计费且不泄露上游密钥?

各位佬,想请教一个桌面软件的视频直传架构问题。做了一个 Windows 桌面软件会分析电影。客户端先把电影压缩成多个约2 FPS、480p片段,当前链路是:
客户端 → 自有 Business API → Redis → Worker → 第三方 API → AI模型
这样视频会先经过自有服务器,用户量增加后,服务器成本会很高。
我目前是自建了一个小中转站,有上游api中转站
请问各位佬如何才能让视频不走自己的中转站服务器?直接传给→ 第三方 API → AI模型。
困扰好久了,虚心请教一下各位佬

实不相瞒,完全没有看懂是要干嘛 :thinking:

这个,可能必须有服务器中转(鉴权,用户登录,速率限制)然后转发到对应ai服务器或中转才可以吧
你总不能客户端写key吧
所以是必须的

如果直接写客户端里直接给你刷爆了

不经过自己中转站服务器,同时保留自有账号计费且不泄露上游密钥

?你在想什么,这可能吗,必须经过你的服务器才可以哈,这个成本省不了

那有点难搞了 :sob:,再请教一下佬,这种服务器一般需要什么配置?感觉对带宽的要求会很高,我的服务承接的全部都是压缩的视频,几十到几百m的视频这样

白话就是,我自建了一个api中转站,但是接的别人的上游,我的客户用途都是分析视频、上传视频,我不想让视频经过自己的服务器

主要是我的客户全部都是上传视频。这个带宽和流量我简直没法估算了

如果可以,客户端把视频转换为图片,比如1s一帧,压缩好传给服务器可能能节省一些算力。然后服务器透传给api?然后一步一步的总结?如果是这样就可以分步做,先总结15个图片(15s)把结果保存下来成为文本,然后再继续总结,最后把所有文本总结好。这样就不用存视频了

然后最后发给用户,这样应该没有问题吧

别的我想不到了

买个oss呢,客户端走oss直传,不知道ai能不能直接从oss下载

这也是个好办法 感谢佬 可以研究研究

理解了一些类似 302 重定向这种吧,openlist 这种项目挂网盘时候有类似方法,扒一下源码去找找灵感

cloudflare的R2了解一下

网页端也是可以对视频进行处理和抽帧和压缩的,但是如果移动端就可能性能不好,容易卡死,但是pc端没有问题

对,客户端性能足够的话,可以考虑(如果我说的那个抽帧发图片不行)就降低帧率和码率再发送?比如把60fps降低到15fps也能降低带宽

现在是压缩到 约2 FPS、480p 我是把整部电影丢进去分析。。。这样仍然压力很大

理论上,你想要让用户点对点传给第三方,需要第三方的api支持。

原理上就是你的控制平面跟第三方要一个临时key,然后把临时key下发给客户端,客户端拿着临时key去找第三方进行上传——某些第三方支持,但第三方不支持的话,这条路是肯定走不通的。


如果在第三方不支持的情况下,退而求其次,就是通过比较廉价的云对象存储服务做中转。

比如Cloudflare R2 / AWS S3 / 阿里云 OSS,用户上传到对此存储之后,触发你的处理逻辑,转发到第三方API。

或者,来点 Cloudflare Workers / 阿里云函数计算 为代表的轻量代理。

上游可以生成临时的key吗,客户端根据文件预估一个预算发给你的服务,然后你生成一个带限额的临时key下发,客户端使用这个临时的key执行调用,并把结果回报给你。问题在于一是暴露了上游接口,二是怎么对账,不能完全信任客户端,还是得上游支持

是的佬 第三方确实支持临时key 但是没给计费功能,用这个临时key用量详情和计费没法统计

楼上那个佬友讲的就是我想说的,要么给个用户个临时链接;要么用户直接上传oss,obs可以直接授信用户一个临时的上传链接,然后把下载链接作为url给模型

佬分析的太详细了。非常感谢。我按这个研究下

我们公司是,

  1. s3上传 url签名,
  2. 前端上传(分片上传也行),
  3. 前端发送上传完成的 API
  4. 服务端存储 s3 不签名的 link
  5. 将 get签名好的 link 发送给 AI

对生成一个对象存储预签名URL,返回给客户端然后直传到R2,提交任务时把URL扔过去