YouTube API v3 - 检查上传的视频是否已完成处理

时间:2015-04-16 09:46:03

标签: php youtube

我正在YouTube API v3使用Google PHP client,我成功上传了视频并检索了详细信息。但是,我想知道YouTube何时完成处理上传的视频并准备好使用

// The code is largely stripped down
$client = new Google_Client();
$youtube = new Google_Service_YouTube($client);
$listResponse = $youtube->videos->listVideos("snippet", array('id' => 'xyz'));

$listResponse是一个只包含Google_Service_YouTube_Video类型的视频对象(因为只需要一个视频ID)的数组,但这些属性似乎都没有关于视频处理状态的有用信息。

我认为这些是$listResponse[0]

中最有趣的属性
[processingDetailsType:protected] => Google_Service_YouTube_VideoProcessingDetails (string)
[processingDetailsDataType:protected] => (empty)
[processed:protected] => Array ([snippet] => 1)

特别有趣的是processingDetailsType,它只是一个代表类名的字符串,processed在YouTube成功处理视频后不会改变。

$listResponse[0]['snippet']保存视频详细信息,但仍无用于确定是否已处理。我监视了publishedAt属性,希望它在处理视频时会改变,但它保持不变。同样,processed属性似乎很有趣,总是空的。

[snippet] => Google_Service_YouTube_VideoSnippet Object
(
    [collection_key:protected] => tags
    [internal_gapi_mappings:protected] => Array
    (
    )

    [categoryId] => 22
    [channelId] => XXXYYYZZZ
    [channelTitle] => Some Channel Title
    [defaultLanguage] => 
    [description] => 
    [liveBroadcastContent] => none
    [localizedType:protected] => Google_Service_YouTube_VideoLocalization
    [localizedDataType:protected] => 
    [publishedAt] => 2015-04-15T14:54:47.000Z
    [tags] => 
    [thumbnailsType:protected] => Google_Service_YouTube_ThumbnailDetails
    [thumbnailsDataType:protected] => 
    [title] => Some Video Title
    [modelData:protected] => Array
    (
        [thumbnails] => Array
        (
            [default] => Array
            (
                [url] => https://i.ytimg.com/vi/xyz/default.jpg
                [width] => 120
                [height] => 90
            )

            [medium] => Array
            (
                [url] => https://i.ytimg.com/vi/xyz/mqdefault.jpg
                [width] => 320
                [height] => 180
            )

            [high] => Array
            (
                [url] => https://i.ytimg.com/vi/xyz/hqdefault.jpg
                [width] => 480
                [height] => 360
            )

            [standard] => Array
            (
                [url] => https://i.ytimg.com/vi/xyz/sddefault.jpg
                [width] => 640
                [height] => 480
            )
        )

        [localized] => Array
        (
            [title] => Some Video Title
            [description] => 
        )
    )

    [processed:protected] => Array
    (
    )
)

2 个答案:

答案 0 :(得分:2)

根据Google API:

" [T]他的片段属性包含channelId,title,description,tags和categoryId属性",没有任何关于处理数据的信息。

相反,如果您使用" processingDetails"你会得到:" processingStatus"," processingProgress",processingProgress.partsTotal,ect",所以最好使用



$listResponse = $youtube->videos->listVideos("processingDetails", array('id' => 'xyz'));




您将获得该数据。在此链接中,您可以看到说明:https://developers.google.com/YouTube/v3/docs/videos/list

答案 1 :(得分:0)

您必须添加此额外参数:processingDetails
我还没有测试过,但我认为它会起作用。

.patterned .container{width: 960px; margin: 0 auto; position: relative;}
.container{width: 960px; margin: 0 auto; position: relative;}

获得响应后,请检查processingStatus节点 ==> status.uploadStatus节点
如果返回"已上传"(仍在上传)或"已处理"(处理已终止确定)。

至少这是Javascript端Youtube API v3的正常行为,而且我希望PHP环境的相同或相似。 我希望能帮助你 如果有效,请将其作为一个好答案报告。