Youtube API - PHP - 如何修改现有广播的开始时间?

时间:2017-10-11 19:45:58

标签: php youtube-api

我已经可以在YouTube Live中创建广播事件,现在我正在尝试使用更新API修改现有的事件。

问题是VideoSnippet库不允许这样做,必须以其他方式完成。

(这个PHP函数将由带有ajax请求的前端调用)

function updateBroadcast(){
    if(!isset($client)){
        $client = getClient();
    }
    $streamData = $_POST['streamData'];

    $client->setAccessToken($_SESSION['google_access_token']);
    $service =  new Google_Service_YouTube($client);

    if ($client->getAccessToken()) {

        try {
            $videoId = $streamData['id'];

            // Call the API's videos.list method to retrieve the video resource.
            $listResponse = $service->videos->listVideos("snippet",
                array('id' => $videoId));

            if (empty($listResponse)) {
                return  json_encode(sprintf('Can\'t find a video with video id: %s', $videoId));
            } else {
                // Since the request specified a video ID, the response only
                // contains one video resource.
                $video = $listResponse[0];
                $videoSnippet = $video['snippet'];

                $videoSnippet->setTitle($streamData['eventName']);
                $videoSnippet->setDescription($streamData['eventCategory']);
                $videoSnippet->setScheduledStartTime($streamData['eventDateTime'])
            }

        } catch (Google_Service_Exception $e) {
            echo sprintf('<p>A service error occurred: <code>%s</code></p>',
                htmlspecialchars($e->getMessage()));
        } catch (Google_Exception $e) {
            echo sprintf('<p>An client error occurred: <code>%s</code></p>',
                htmlspecialchars($e->getMessage()));
        }
        return json_encode("Video Updated");
    }
}

它抛出了这个错误:

致命错误:在第242行的/var/www/html/production/app/empowerir/php/videoStreaming/functions.php中调用未定义的方法Google_Service_YouTube_VideoSnippet :: setScheduledStartTime()

第242行是:

$videoSnippet->setScheduledStartTime($streamData['eventDateTime'])

1 个答案:

答案 0 :(得分:0)

如果您阅读了错误,它应该已经告诉您问题所在:

  

调用未定义的方法   Google_Service_YouTube_VideoSnippet :: setScheduledStartTime()

LiveBroadcasts.update,没有这样的方法setScheduledStartTime(看起来你是在飞行中发明的)。如果您要更新snippet.scheduledStartTime媒体资源,则必须在LiveBroadcasts.update请求的请求正文中进行设置。