1

我正在尝试解决使用文件块通过 api 上传视频的问题。我有一个 4704384 字节的示例文件,我正在发送最大大小为 1048576 字节的块。所以会有 4 块 1048576 和 1 块 510080。这些块似乎可以很好地发送到 Vimeo,但是当我调用 vimeo.videos.upload.verifyChunks 时,我得到了这个响应:

<?xml version="1.0" encoding="UTF-8"?>
<rsp generated_in="3.8400" stat="ok">
  <ticket id="cf2c9a26eea3aaffb9b4593efc1e0eda">
    <chunks>
      <chunk id="cf2c9a26eea3aaffb9b4593efc1e0eda" size="511436"/>
    </chunks>
  </ticket>
</rsp>

由于与实际文件数据一起发送的其他 http 标头,块大小是否与我的任何预期块不匹配?另外,这里是否存在问题,因为响应的格式与 Vimeo 上传 api 页面上的示例响应不匹配?他们的例子:

<?xml version="1.0" encoding="utf-8"?>
<rsp stat="ok" generated_in="0.0028">
    <ticket id="abcdef124567890">
        <chunk id="0" size="678900" />
        <chunk id="1" size="678900" />
        <chunk id="2" size="4003" />
    </ticket>
</rsp>

为什么我的所有chunk都合并到一个条目中,并且id与ticket id相同?

当我调用 vimeo.videos.upload.complete 时,我得到了这个:

<?xml version="1.0" encoding="UTF-8"?>
<rsp generated_in="2.3289" stat="fail">
  <err code="708" expl="The file could not be saved. Try again." msg="File error"/>
</rsp>

我该如何解决这个问题才能弄清楚发生了什么?

更新:我认为我的问题是我试图通过 PUT 发送多个块,用于流式传输整个文件。要上传块,它需要是一个 POST。但是当我尝试发布到 Vimeo 时,我收到此错误:“已建立的连接已被主机中的软件中止”。我已尝试禁用建议修复此错误的防病毒和 Windows 防火墙,但没有帮助。

4

1 回答 1

1

事实证明,我使用的是旧的 vimeo.videos.upload.getTicket 调用,我一直在使用它来流式传输使用 PUT 的 upload_method=streaming 的小视频。我将其更新为 upload_method=post 并且我的多块 POST 有效。

于 2013-11-15T20:01:38.713 回答