0

我正在尝试将tus-server神社集成以将视频文件上传到 Vimeo。

Client.js

this.uppy = new Uppy({
  id: 'uppy1',
  autoProceed: false,
  debug: true,
  restrictions: {
    allowedFileTypes: ['.mp4'],
  },
  allowMultipleUploads: true,
})
  .use(Tus, { endpoint: `${API_BASE}/files` })
 /* .use(XHRUpload, { endpoint: `${API_BASE}/files`,
    formData: true,
    bundle: false,
    fieldName: 'file',
    headers: getHeaders(), */
 })
  .use(GoogleDrive, { serverUrl: 'https://companion.uppy.io' })
  .use(Dropbox, { serverUrl: 'https://companion.uppy.io/' });

# config/routes.rb (Rails)
Rails.application.routes.draw do
  mount Tus::Server => "/files"
end

这里默认tus服务器,直接将文件上传到data/项目根目录下有文件的文件夹中。

我想要实现的是将video文件上传到 Vimeo

像:

  1. 文件转到${API_BASE}/files
  2. 矿工获取文件
  3. 我将文件传递给 Vimeo(使用vimeo_me2
  4. Vimeo 上传文件,将 video_url 发回,我现在将 video_url 插入到某个 video 表中。
  5. 上述所有这些过程都需要可恢复。

我正在使用vimeo_me2 gem。

任何人都可以提供将 tus 服务器与神社集成/配置的解决方案吗?

非常感谢任何帮助!

4

1 回答 1

1

tus-ruby-server 和 Shrine 的作者在这里 :)

就我而言,您有两个选择:使用 Vimeo 的“拉上传”,或直接上传到 Vimeo。

A. 拉取上传

Vimeo 的拉取上传允许您向 Vimeo 提供文件的链接,并让它为您下载并保存文件。这应该是可恢复的,因为 tus-ruby-server 支持范围请求,而且似乎 Vimeo 会使用它:

我们甚至处理可能出现的任何连接问题。

vimeo_me2gem 有一个拉上传的方法。所以你可以给它 tus 文件的链接,例如,如果你有一个Movie带有video附件的链接:

vimeo_client.pull_upload("Name of video", movie.video.url)

B. 直接上传到 Vimeo

Vimeo也实现了tus可恢复上传协议,所以理论上应该可以使用Uppy直接上传到Vimeo。在这种情况下,您可以摆脱tus-ruby-server.

我没有亲自尝试过这种方法。似乎有一个额外的创建视频的第一步,但其余部分看起来像标准的 tus 协议。这是由 Uppy 的作者创建的示例应用程序,所以我认为您应该能够从那里复制粘贴很多东西。


vimeo_me2推荐的方法是从 tus 服务器下载文件并使用gem将其上传到 Vimeo 。首先,下载将无法恢复,因为使用的downgemshrine-tus尚不支持可恢复下载。其次,虽然vimeo_me2 使用 tus 协议进行上传,但在连接错误的情况下,它似乎没有做任何事情来恢复上传。它似乎也将整个文件加载到内存中。

在任何情况下,选项 A 和 B 的性能都会更高。

于 2018-11-23T20:08:13.847 回答