0

首先让我说我不是在问“如何检查以前上传的视频的状态”。我的问题是关于从上传的响应中获取视频的状态。我正在使用 dotnet 客户端,上传完成后,响应是一个Google.Apis.Youtube.v3.Data.Video对象。该对象有一个名为的属性Status,其中包含以下字段RejectionReasonPrivacyStatusUploadStatus。问题是只有 PrivacyStatus 和 UploadStatus 有值。RejectionReason 为空。Jeff Posnick 提到过(在这里查看整个线程

作为上传响应的一部分,无法确定视频是否重复,因为 YouTube 在处理视频之前不知道视频是否重复,并且在上传完成后进行处理

这有点奇怪,因为当我在上传后立即发出 video.list 时,API 会返回上传视频的状态。因此,即使视频没有发布,而且 YouTube 似乎仍在索引/处理视频,它已经知道“刚刚上传的视频”的状态。那么为什么它不能将状态作为响应的一部分返回呢?

响应中包含状态很重要,因为如果没有,那么在代码中,每次上传时我们都必须执行两次 API 调用:(1) insertmediaupload 然后 (2) video.list。这是一项非常昂贵的操作,尤其是并非所有上传都是重复的。

编辑 作为对 Jeff-Posnick 在下方评论的回应,问题是“API 是否可以等待几秒钟并检查处理是否完成,然后将状态作为响应的一部分包含在内?”。

由于我所看到的行为,我提出了这个问题:That's a bit strange because when I issue a video.list right after the upload the API returns a status for the uploaded video. 但我一直在使用 API 并得到不一致的结果。我一遍又一遍地上传相同的视频,有时会出现“重复”状态,有时则没有。请注意我采取的步骤,上面的 #1 和 #2。这两个 API 调用之间没有其他代码。

4

1 回答 1

0

我不确定这里的问题是什么。

您似乎了解 YouTube API 上传工作方式的限制,这些限制仍然适用于 YouTube Data API v3。在videos.insert()请求返回响应时,视频的状态是未知的,因为它还没有被处理。实际处理可能会在视频上传后一两秒发生,也可能会在视频上传后几分钟(或更长时间)发生,尤其是对于较大的视频文件。它不是实时完成的,期望 videos.insert() API 调用阻塞等待处理完成是不合理的。

我不同意您的评估,即执行 avideos.list(id=...,part=status)是“非常昂贵的操作”。与实际上传视频相比,消耗的带宽量和 YouTube API 配额是最少的。提供一种通过某种回调或推送更新机制独立于调用来传达处理状态的方法会很好videos.insert(),但我们目前没有任何可用的东西。你必须投票videos.list(id=...,part=status)

于 2013-02-13T22:32:24.323 回答