/**
  * @param LiveBroadcast $liveBroadcast
  * @param string        $privacyStatus
  * @param string|null   $id
  * @return \Google_Service_YouTube_LiveBroadcast
  */
 protected function setupBroadcast(LiveBroadcast $liveBroadcast, $privacyStatus = 'public', $id = null)
 {
     $title = $liveBroadcast->getName();
     $description = $liveBroadcast->getDescription();
     $start = $liveBroadcast->getStartTimestamp();
     $end = $liveBroadcast->getEndTimestamp();
     if (new \DateTime() > $start) {
         $start = new \DateTime();
         $start->add(new \DateInterval('PT1S'));
     }
     $broadcastSnippet = new \Google_Service_YouTube_LiveBroadcastSnippet();
     $broadcastSnippet->setTitle($title);
     $broadcastSnippet->setDescription($description);
     $broadcastSnippet->setScheduledStartTime($start->format(\DateTime::ATOM));
     $broadcastSnippet->setScheduledEndTime($end->format(\DateTime::ATOM));
     $status = new \Google_Service_YouTube_LiveBroadcastStatus();
     $status->setPrivacyStatus($privacyStatus);
     $broadcastInsert = new \Google_Service_YouTube_LiveBroadcast();
     if ($id !== null) {
         $broadcastInsert->setId($id);
     }
     $broadcastInsert->setSnippet($broadcastSnippet);
     $broadcastInsert->setStatus($status);
     $broadcastInsert->setKind('youtube#liveBroadcast');
     return $broadcastInsert;
 }
try {
    // 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('New Broadcast');
    $broadcastSnippet->setScheduledStartTime('2034-01-30T00:00:00.000Z');
    $broadcastSnippet->setScheduledEndTime('2034-01-31T00:00:00.000Z');
    // 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('private');
    // Create the API request that inserts the liveBroadcast resource.
    $broadcastInsert = new Google_Service_YouTube_LiveBroadcast();
    $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('New Stream');
    // 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("1080p");
    $cdn->setIngestionType('rtmp');
    // Create the API request that inserts the liveStream resource.
    $streamInsert = new Google_Service_YouTube_LiveStream();
    $streamInsert->setSnippet($streamSnippet);