【问题标题】:Error setting contentDetails for live event - Youtube Live API v3为直播活动设置 contentDetails 时出错 - Youtube Live API v3
【发布时间】:2014-03-06 05:52:36
【问题描述】:

一段时间以来,我一直在使用 php 成功创建 yt 直播活动。由于我尝试禁用嵌入,因此收到以下错误:

["Error calling POST https:\/\/www.googleapis.com\/youtube\/v3\/liveBroadcasts?part=snippet%2Cstatus: (400) contentDetails"]

代码如下:

                            $client = new Google_Client();
                            $client->setClientId($OAUTH2_CLIENT_ID);
                            $client->setClientSecret($OAUTH2_CLIENT_SECRET);


                            $client->refreshToken($tokens[0]['google_oauth_refresh_token']);


                            // Define an object that will be used to make all API requests.
                            $youtube = new Google_Service_YouTube($client);



                            // Check to ensure that the access token was successfully acquired.
                            if ($client->getAccessToken()) {    

                                            // die();


                                // Create an object for the liveBroadcast resource's snippet. Specify values
                                // for the snippet's title, scheduled start time, and scheduled end time.
                                $broadcastSnippet = new Google_Service_YouTube_LiveBroadcastSnippet();
                                $broadcastSnippet->setTitle($_POST['title']);
                                $broadcastSnippet->setDescription($_POST['description']);
                                $broadcastSnippet->setScheduledStartTime(date('c', strtotime($_POST['start_date']))); //'2034-01-30T00:00:00.000Z');
                                $broadcastSnippet->setScheduledEndTime(date('c', strtotime($_POST['start_time']))); // '2034-01-31T00:00:00.000Z');

                                $contentDetails = new Google_Service_YouTube_LiveBroadcastContentDetails();
                                $contentDetails->setEnableEmbed(false);
                                // debug($contentDetails);

                                // Create an object for the liveBroadcast resource's status, and set the
                                // broadcast's status to "private".
                                $status = new Google_Service_YouTube_LiveBroadcastStatus();
                                // $status->setPrivacyStatus('public');
                                $status->setPrivacyStatus('private');
                                // $status->setPrivacyStatus('unlisted');

                                // Create the API request that inserts the liveBroadcast resource.
                                $broadcastInsert = new Google_Service_YouTube_LiveBroadcast();
                                $broadcastInsert->setContentDetails($contentDetails);
                                $broadcastInsert->setSnippet($broadcastSnippet);
                                $broadcastInsert->setStatus($status);
                                $broadcastInsert->setKind('youtube#liveBroadcast');

                                // Execute the request and return an object that contains information
                                // about the new broadcast.
                                $broadcastsResponse = $youtube->liveBroadcasts->insert('snippet,status', $broadcastInsert, array());

                                // Create an object for the liveStream resource's snippet. Specify a value
                                // for the snippet's title.
                                $streamSnippet = new Google_Service_YouTube_LiveStreamSnippet();
                                $streamSnippet->setTitle('Transcoder - '.$_POST['title']);

                                // Create an object for content distribution network details for the live
                                // stream and specify the stream's format and ingestion type.
                                $cdn = new Google_Service_YouTube_CdnSettings();
                                $cdn->setFormat("720p");
                                $cdn->setIngestionType('rtmp');

                                // Create the API request that inserts the liveStream resource.
                                $streamInsert = new Google_Service_YouTube_LiveStream();
                                $streamInsert->setSnippet($streamSnippet);
                                $streamInsert->setCdn($cdn);
                                $streamInsert->setKind('youtube#liveStream');

                                // Execute the request and return an object that contains information
                                // about the new stream.
                                $streamsResponse = $youtube->liveStreams->insert('snippet,cdn',
                                    $streamInsert, array());

                                // debug($streamsResponse);

                                // Bind the broadcast to the live stream.
                                $bindBroadcastResponse = $youtube->liveBroadcasts->bind(
                                    $broadcastsResponse['id'],'id,contentDetails',
                                    array(
                                        'streamId' => $streamsResponse['id'],
                                    ));

【问题讨论】:

    标签: api post youtube youtube-api youtube-livestreaming-api


    【解决方案1】:

    在这一行:

    $broadcastsResponse = $youtube->liveBroadcasts->insert('snippet,status', $broadcastInsert, array());
    

    应该是:

    $broadcastsResponse = $youtube->liveBroadcasts->insert('snippet,status,contentDetails', $broadcastInsert, array());
    

    您正在设置 contentDetails 的嵌入属性,但未将其包含在请求中。 如果您阅读了错误,那就是它所抱怨的。

    【讨论】:

      猜你喜欢
      • 2013-08-10
      • 2016-02-26
      • 2019-06-14
      • 2015-02-08
      • 2015-12-07
      • 2016-04-10
      • 1970-01-01
      • 2021-10-07
      • 2021-12-24
      相关资源
      最近更新 更多