LiveStream имеет другое имя потока при создании из LiveStream API PHP (проверенный результат API, с помощью API Explorer, а также на странице YouTube)

Я что-то делаю не так, или у нас есть ошибка в LiveStream API? Как три разных источника могут отображать три разных названия прямой трансляции для одного и того же приема?

По какой-то причине вставленный объект LiveStream приходит с ответом, который не соответствует веб-странице YouTube.

Разделы этого вопроса:

  • PHP-код для прямой трансляции
  • Результат API в $ liveStream
  • Код PHP для вставки и привязки трансляции
  • Ответ на $ bindBroadcastResponse
  • YouTube LiveStream API Explorer
  • Резюме
  • И результат на странице YouTube не совпадает

Код PHP для прямой трансляции

$streamSnippet = new \Google_Service_YouTube_LiveStreamSnippet();
$streamSnippet->setTitle($cameraName);

$cdn = new \Google_Service_YouTube_CdnSettings();
$cdn->setFormat($cameraName);
$cdn->setIngestionType('rtmp');

$streamInsert = new \Google_Service_YouTube_LiveStream();
$streamInsert->setSnippet($streamSnippet);
$streamInsert->setCdn($cdn);
$streamInsert->setKind('youtube#liveStream');

$liveStream = $youtube->liveStreams->insert('snippet,cdn',$streamInsert, array());

Результат API в $ liveStream

Google_Service_YouTube_LiveStream Object
(
    [cdnType:protected] => Google_Service_YouTube_CdnSettings
    ...
    [etag] => "5C5HHOaBSHC5ZXfkrT4ZlRCi01A/lY9i12sOWOAkTwfchEAQUxEWdX8"
    [id] => UOzxsX96_We6MrMTsP5RiA1480670405575117
    [kind] => youtube#liveStream
    ...
    [modelData:protected] => Array
        (
            ...    
            [cdn] => Array
                (
                    [format] => 1440p
                    [ingestionType] => rtmp
                    [ingestionInfo] => Array
                        (
                            [streamName] => 9zfr-ggd9-brtf-XXXX
                            [ingestionAddress] => rtmp://a.rtmp.youtube.com/live2
                            [backupIngestionAddress] => rtmp://b.rtmp.youtube.com/live2?backup=1
                        )
                    [resolution] => 1440p
                    [frameRate] => 30fps
                )
        )
    ...
)

Код PHP для вставки и привязки трансляций

$broadcastInsert = new \Google_Service_YouTube_LiveBroadcast();
$broadcastInsert->setSnippet($broadcastSnippet);
$broadcastInsert->setStatus($status);
$broadcastInsert->setKind('youtube#liveBroadcast');
$broadcastsResponse = $youtube->liveBroadcasts->insert('snippet,status',$broadcastInsert, array());

$bindBroadcastResponse = $youtube->liveBroadcasts->bind($broadcastsResponse['id'],'id,contentDetails',array('streamId' => $liveStream['id'],));

Ответ на $ bindBroadcastResponse

Google_Service_YouTube_LiveBroadcast Object
(
    ...
    [etag] => "5C5HHOaBSHC5ZXfkrT4ZlRCi01A/_2Jev_YmRlYUwMBX1ptq_Kp8uVs"
    [id] => idd8f7dSLzk
    [kind] => youtube#liveBroadcast
    ...
    [modelData:protected] => Array
        (
            [contentDetails] => Array
                (
                    [boundStreamId] => UOzxsX96_We6MrMTsP5RiA1480670405575117
                    ...
                )    
        )    
)

Обозреватель API YouTube LiveStream

Если я перечислю все потоки позже, используя LiveStream API Explorer см. изображение ниже, я получил третий другой результат (см. код ниже).

введите здесь описание изображения

{
 "kind": "youtube#liveStreamListResponse",
 "etag": "\"5C5HHOaBSHC5ZXfkrT4ZlRCi01A/RGcoFd2XK9IZmX0hgw_pFxuaeC4\"",
 "pageInfo": {
  "totalResults": 0,
  "resultsPerPage": 5
 },
 "items": [
  {
   "kind": "youtube#liveStream",
   "etag": "\"5C5HHOaBSHC5ZXfkrT4ZlRCi01A/d-ptvs6HC_oItk2Kv2PtrovurCk\"",
   "id": "UOzxsX96_We6MrMTsP5RiA1480670405575117",
   "snippet": ...,
   "cdn": {
    "format": "1440p",
    "ingestionType": "rtmp",
    "ingestionInfo": {
     "streamName": "1wzh-zjwb-b0fr-XXXX",
     "ingestionAddress": "rtmp://a.rtmp.youtube.com/live2",
     "backupIngestionAddress": "rtmp://b.rtmp.youtube.com/live2?backup=1"
    },
    "resolution": "1440p",
    "frameRate": "30fps"
   }
  }
 ]
}

Резюме

PHP-> Google_Service_YouTube_LiveBroadcast[id] => idd8f7dSLzk
PHP-> Google_Service_YouTube_LiveStream->modelData[cdn][ingestionInfo][streamName] => 9zfr-ggd9-brtf-XXXX
API Explorer -> items[0].cdn.ingestionInfo.streamName => "1wzh-zjwb-b0fr-XXXX"

И результат на странице YouTube не совпадает

Идентификатор LiveStream не соответствует тому, который я получил при создании


person Lauro Wolff Valente Sobrinho    schedule 02.12.2016    source источник
comment
Я знаю, что это может быть похоже на stackoverflow.com/questions/18235664/, но это не так. Эта ветка возникла очень давно и больше не применяется. API в то время был на v2, теперь он на v3 (и я использую v3 api)   -  person Lauro Wolff Valente Sobrinho    schedule 02.12.2016
comment
Только что обнаружил дефект в Google: code.google.com/p/gdata-issues/issues/   -  person Lauro Wolff Valente Sobrinho    schedule 04.12.2016
comment
Все еще происходит ....   -  person Lauro Wolff Valente Sobrinho    schedule 18.01.2017


Ответы (1)


Спустя очень долгое время кто-то ответил на ошибку, которую я заполнил в Google.

Это ответ от этот тред:

Не обязательно, чтобы ключ потока, предоставляемый API, совпадал с ключом потока, предоставленным пользовательским интерфейсом. Однако, если два ключа потока различны, оба должны работать.

Пожалуйста, ответьте на эту ошибку, если вы видите проблему, когда ключи потока разные и работает только один из них.

Дело в том, что я ранее пытался выполнить приведение с использованием имени потока, полученного из API, но это не сработало.

Сейчас тестирую, работает.

person Lauro Wolff Valente Sobrinho    schedule 19.01.2017