Ошибка создания трансляции youtube api obs

I’m trying to create Youtube live stream through my webpage via Youtube Data API. Whatever I tried, keep getting that error:

{
  "error": {
    "code": 400,
    "message": "'{0}'",
    "errors": [
      {
        "message": "'{0}'",
        "domain": "youtube.part",
        "reason": "unknownPart",
        "location": "part",
        "locationType": "parameter"
      }
    ]
  }
}

Unfortunately, this error doesn’t explain anything, and I couldn’t find anything to help me to solve it. I hope someone can explain what is going on here.

I put all relative files down below and added some comments.

web.php

Route::get('youtube/{task}', [YoutubeController::class, 'authenticate'])->name('youtube.authenticate');
Route::get('youtube/{task}/redirect', [YoutubeController::class, 'create'])->name('youtube.create');

YoutubeController.php

class YoutubeController extends Controller
{
    private $youtube;

    public function __construct(Request $request)
    {
        // like YoutubeStreamService or YoutubeUploadService
        $this->youtube = new ("AppServicesYoutubeYoutube" . ucfirst($request->route()->parameter('task')) . "Service");
    }

    public function authenticate($task)
    {
        return redirect()->away($this->youtube->authenticate($task));
    }

    public function create(Request $request, $task)
    {
        $this->youtube->create($request, $task);
    }
}

I use an abstract class for authentication codes.

abstract class YoutubeAbstraction
{
    // Called from the controller.
    // Returns the url to google to authenticate the request. 
    public function authenticate($task)
    {
        return $this->client($task)->createAuthUrl();
    }

    // This code came from mostly Youtueb API documentation.
    protected function client($task)
    {
        $scopes = [
            'upload' => ['https://www.googleapis.com/auth/youtube.upload', 'https://www.googleapis.com/auth/youtube.force-ssl'],
            'stream' => ['https://www.googleapis.com/auth/youtube.force-ssl']
        ][$task];
        $client = new Google_Client();
        $client->setApplicationName("MyApp");
        $client->setScopes($scopes);
        $client->setAuthConfig(base_path("client_secret_{$task}.json"));
        $client->setAccessType('offline');

        return $client;
    }

    abstract public function create($request, $task); 
}

YoutubeStreamService.php

class YoutubeStreamService extends YoutubeAbstraction
{
    // This code came from Youtube API documentation completely.
    // It contains only the required fields and their hard-coded values.
    public function create($request, $task)
    {
        $client = $this->client($task);
        $client->setAccessToken($client->fetchAccessTokenWithAuthCode($request->code));

        $service = new Google_Service_YouTube($client);        
        $liveBroadcast = new Google_Service_YouTube_LiveBroadcast();

        $liveBroadcastSnippet = new Google_Service_YouTube_LiveBroadcastSnippet();
        $liveBroadcastSnippet->setTitle('my title');
        $liveBroadcastSnippet->setScheduledStartTime('2021-04-04T20:00:00.00+03:00');
        $liveBroadcast->setSnippet($liveBroadcastSnippet);

        $liveBroadcastStatus = new Google_Service_YouTube_LiveBroadcastStatus();
        $liveBroadcastStatus->setPrivacyStatus('private');
        $liveBroadcast->setStatus($liveBroadcastStatus);

        // If I add dd($liveBroadcast) here, I see the object.
        // So the error is thrown by the function down below.

        $response = $service->liveBroadcasts->insert('', $liveBroadcast);
        print_r($response);
    }
}

I’m trying to create Youtube live stream through my webpage via Youtube Data API. Whatever I tried, keep getting that error:

{
  "error": {
    "code": 400,
    "message": "'{0}'",
    "errors": [
      {
        "message": "'{0}'",
        "domain": "youtube.part",
        "reason": "unknownPart",
        "location": "part",
        "locationType": "parameter"
      }
    ]
  }
}

Unfortunately, this error doesn’t explain anything, and I couldn’t find anything to help me to solve it. I hope someone can explain what is going on here.

I put all relative files down below and added some comments.

web.php

Route::get('youtube/{task}', [YoutubeController::class, 'authenticate'])->name('youtube.authenticate');
Route::get('youtube/{task}/redirect', [YoutubeController::class, 'create'])->name('youtube.create');

YoutubeController.php

class YoutubeController extends Controller
{
    private $youtube;

    public function __construct(Request $request)
    {
        // like YoutubeStreamService or YoutubeUploadService
        $this->youtube = new ("AppServicesYoutubeYoutube" . ucfirst($request->route()->parameter('task')) . "Service");
    }

    public function authenticate($task)
    {
        return redirect()->away($this->youtube->authenticate($task));
    }

    public function create(Request $request, $task)
    {
        $this->youtube->create($request, $task);
    }
}

I use an abstract class for authentication codes.

abstract class YoutubeAbstraction
{
    // Called from the controller.
    // Returns the url to google to authenticate the request. 
    public function authenticate($task)
    {
        return $this->client($task)->createAuthUrl();
    }

    // This code came from mostly Youtueb API documentation.
    protected function client($task)
    {
        $scopes = [
            'upload' => ['https://www.googleapis.com/auth/youtube.upload', 'https://www.googleapis.com/auth/youtube.force-ssl'],
            'stream' => ['https://www.googleapis.com/auth/youtube.force-ssl']
        ][$task];
        $client = new Google_Client();
        $client->setApplicationName("MyApp");
        $client->setScopes($scopes);
        $client->setAuthConfig(base_path("client_secret_{$task}.json"));
        $client->setAccessType('offline');

        return $client;
    }

    abstract public function create($request, $task); 
}

YoutubeStreamService.php

class YoutubeStreamService extends YoutubeAbstraction
{
    // This code came from Youtube API documentation completely.
    // It contains only the required fields and their hard-coded values.
    public function create($request, $task)
    {
        $client = $this->client($task);
        $client->setAccessToken($client->fetchAccessTokenWithAuthCode($request->code));

        $service = new Google_Service_YouTube($client);        
        $liveBroadcast = new Google_Service_YouTube_LiveBroadcast();

        $liveBroadcastSnippet = new Google_Service_YouTube_LiveBroadcastSnippet();
        $liveBroadcastSnippet->setTitle('my title');
        $liveBroadcastSnippet->setScheduledStartTime('2021-04-04T20:00:00.00+03:00');
        $liveBroadcast->setSnippet($liveBroadcastSnippet);

        $liveBroadcastStatus = new Google_Service_YouTube_LiveBroadcastStatus();
        $liveBroadcastStatus->setPrivacyStatus('private');
        $liveBroadcast->setStatus($liveBroadcastStatus);

        // If I add dd($liveBroadcast) here, I see the object.
        // So the error is thrown by the function down below.

        $response = $service->liveBroadcasts->insert('', $liveBroadcast);
        print_r($response);
    }
}

#php #laravel #youtube-api #youtube-data-api

#php #laravel #youtube-api #youtube-data-api

Вопрос:

Я пытаюсь создать прямую трансляцию Youtube через свою веб-страницу через API данных Youtube. Что бы я ни пробовал, продолжайте получать эту ошибку:

 {
  "error": {
    "code": 400,
    "message": "'{0}'",
    "errors": [
      {
        "message": "'{0}'",
        "domain": "youtube.part",
        "reason": "unknownPart",
        "location": "part",
        "locationType": "parameter"
      }
    ]
  }
}
 

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

Я поместил все относительные файлы ниже и добавил несколько комментариев.

web.php

 Route::get('youtube/{task}', [YoutubeController::class, 'authenticate'])->name('youtube.authenticate');
Route::get('youtube/{task}/redirect', [YoutubeController::class, 'create'])->name('youtube.create');
 

YoutubeController.php

 class YoutubeController extends Controller
{
    private $youtube;

    public function __construct(Request $request)
    {
        // like YoutubeStreamService or YoutubeUploadService
        $this->youtube = new ("AppServicesYoutubeYoutube" . ucfirst($request->route()->parameter('task')) . "Service");
    }

    public function authenticate($task)
    {
        return redirect()->away($this->youtube->authenticate($task));
    }

    public function create(Request $request, $task)
    {
        $this->youtube->create($request, $task);
    }
}
 

Я использую абстрактный класс для кодов аутентификации.

 abstract class YoutubeAbstraction
{
    // Called from the controller.
    // Returns the url to google to authenticate the request. 
    public function authenticate($task)
    {
        return $this->client($task)->createAuthUrl();
    }

    // This code came from mostly Youtueb API documentation.
    protected function client($task)
    {
        $scopes = [
            'upload' => ['https://www.googleapis.com/auth/youtube.upload', 'https://www.googleapis.com/auth/youtube.force-ssl'],
            'stream' => ['https://www.googleapis.com/auth/youtube.force-ssl']
        ][$task];
        $client = new Google_Client();
        $client->setApplicationName("MyApp");
        $client->setScopes($scopes);
        $client->setAuthConfig(base_path("client_secret_{$task}.json"));
        $client->setAccessType('offline');

        return $client;
    }

    abstract public function create($request, $task); 
}
 

YoutubeStreamService.php

 class YoutubeStreamService extends YoutubeAbstraction
{
    // This code came from Youtube API documentation completely.
    // It contains only the required fields and their hard-coded values.
    public function create($request, $task)
    {
        $client = $this->client($task);
        $client->setAccessToken($client->fetchAccessTokenWithAuthCode($request->code));

        $service = new Google_Service_YouTube($client);        
        $liveBroadcast = new Google_Service_YouTube_LiveBroadcast();

        $liveBroadcastSnippet = new Google_Service_YouTube_LiveBroadcastSnippet();
        $liveBroadcastSnippet->setTitle('my title');
        $liveBroadcastSnippet->setScheduledStartTime('2021-04-04T20:00:00.00 03:00');
        $liveBroadcast->setSnippet($liveBroadcastSnippet);

        $liveBroadcastStatus = new Google_Service_YouTube_LiveBroadcastStatus();
        $liveBroadcastStatus->setPrivacyStatus('private');
        $liveBroadcast->setStatus($liveBroadcastStatus);

        // If I add dd($liveBroadcast) here, I see the object.
        // So the error is thrown by the function down below.

        $response = $service->liveBroadcasts->insert('', $liveBroadcast);
        print_r($response);
    }
}
 

Ответ №1:

Согласно официальной спецификации, ваш вызов LiveBroadcasts.insert конечной точки API должен включать параметр запроса:

part (строка)

part Параметр служит двум целям в этой операции. Он определяет свойства, которые будет устанавливать операция записи, а также свойства, которые будет включать ответ API.

part Свойства, которые вы можете включить в значение параметра id , snippet , contentDetails , и status .

В PHP это требование сводится к вызову вашего API, подобного приведенному ниже:

 $response = $service->liveBroadcasts->insert(
    'id,snippet,status', $liveBroadcast);
 

Комментарии:

1. Спасибо, stvar, я почти сошел с ума.

Я пытаюсь создать прямую трансляцию Youtube через свою веб-страницу через API данных Youtube. Что бы я ни пробовал, продолжайте получать эту ошибку:

{
  "error": {
    "code": 400,
    "message": "'{0}'",
    "errors": [
      {
        "message": "'{0}'",
        "domain": "youtube.part",
        "reason": "unknownPart",
        "location": "part",
        "locationType": "parameter"
      }
    ]
  }
}

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

Я поместил все относительные файлы ниже и добавил несколько комментариев.

Web.php

Route::get('youtube/{task}', [YoutubeController::class, 'authenticate'])->name('youtube.authenticate');
Route::get('youtube/{task}/redirect', [YoutubeController::class, 'create'])->name('youtube.create');

YoutubeController.php

class YoutubeController extends Controller
{
    private $youtube;

    public function __construct(Request $request)
    {
        // like YoutubeStreamService or YoutubeUploadService
        $this->youtube = new ("AppServicesYoutubeYoutube" . ucfirst($request->route()->parameter('task')) . "Service");
    }

    public function authenticate($task)
    {
        return redirect()->away($this->youtube->authenticate($task));
    }

    public function create(Request $request, $task)
    {
        $this->youtube->create($request, $task);
    }
}

Я использую абстрактный класс для кодов аутентификации.

abstract class YoutubeAbstraction
{
    // Called from the controller.
    // Returns the url to google to authenticate the request. 
    public function authenticate($task)
    {
        return $this->client($task)->createAuthUrl();
    }

    // This code came from mostly Youtueb API documentation.
    protected function client($task)
    {
        $scopes = [
            'upload' => ['https://www.googleapis.com/auth/youtube.upload', 'https://www.googleapis.com/auth/youtube.force-ssl'],
            'stream' => ['https://www.googleapis.com/auth/youtube.force-ssl']
        ][$task];
        $client = new Google_Client();
        $client->setApplicationName("MyApp");
        $client->setScopes($scopes);
        $client->setAuthConfig(base_path("client_secret_{$task}.json"));
        $client->setAccessType('offline');

        return $client;
    }

    abstract public function create($request, $task); 
}

YoutubeStreamService.php

class YoutubeStreamService extends YoutubeAbstraction
{
    // This code came from Youtube API documentation completely.
    // It contains only the required fields and their hard-coded values.
    public function create($request, $task)
    {
        $client = $this->client($task);
        $client->setAccessToken($client->fetchAccessTokenWithAuthCode($request->code));

        $service = new Google_Service_YouTube($client);        
        $liveBroadcast = new Google_Service_YouTube_LiveBroadcast();

        $liveBroadcastSnippet = new Google_Service_YouTube_LiveBroadcastSnippet();
        $liveBroadcastSnippet->setTitle('my title');
        $liveBroadcastSnippet->setScheduledStartTime('2021-04-04T20:00:00.00+03:00');
        $liveBroadcast->setSnippet($liveBroadcastSnippet);

        $liveBroadcastStatus = new Google_Service_YouTube_LiveBroadcastStatus();
        $liveBroadcastStatus->setPrivacyStatus('private');
        $liveBroadcast->setStatus($liveBroadcastStatus);

        // If I add dd($liveBroadcast) here, I see the object.
        // So the error is thrown by the function down below.

        $response = $service->liveBroadcasts->insert('', $liveBroadcast);
        print_r($response);
    }
}

Hello! I’ve been using OBS Studios for a few months now running my streams at 8000kb/s without almost any issue. All of a sudden when I try to go live within the past few days, it either gives me failed to go live/youtube API error message or is running at extremely low rate (as low as 800kb/s) which is unwatchable and unstreamable. The logs gave me the error:
19:49:17.739: «YouTube API request failed: Operation timed out after 16000 milliseconds with 0 bytes received»

I’m just trying to figure out the cause of this issue becuase I haven’t made any changes to how I stream. I’m curious what could cause this massive issue out of nowhere. Any advice on the matter would be really appreciated!!!

(P.S.) My internet randomly crashed recently and the issue seemed to have started after that. I did a test on my internet speeds and it still says I get 300mb/s download and 4mb/s upload. Could my router possibly be going bad or something like that?

Attachments

  • 2022-06-28 19-48-46.txt

    95.5 KB · Views: 32

Cправка — YouTube

Войти

Справка Google

  • Справочный центр
    • Устранение проблем
    • Обучающие видео
    • Как управлять настройками канала
    • Режим родительского контроля на YouTube
    • YouTube Premium
    • Как начать вести свой канал
    • Как зарабатывать с помощью Партнерской программы YouTube
    • Правила, безопасность и авторское право
  • Сообщество
  • YouTube
  • Политика конфиденциальности
  • Условия использования YouTube
  • Отправить отзыв

Тема отзыва

Информация в текущем разделе Справочного центра

Общие впечатления о Справочном центре Google

  • Справочный центр
  • Сообщество
  • Советы авторам

YouTube

Сейчас к нам поступает очень много запросов. Возможно, вам придется ждать ответа дольше обычного.

Некоторые пользователи Windows сообщают, что в конечном итоге они сталкиваются с ошибкой «Не удалось начать потоковую передачу» с OBS при попытке потоковой передачи контента на YouTube. Сообщение об ошибке, сопровождающее ошибку: «Ошибка NVENC: init_encoder: nvEncGetEncodePresetConfig failed: 15 (NV_ENC_ERR_INVALID_VERSION)»

Ошибка «Не удалось начать трансляцию» в OBS

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

  • Отсутствующий / поврежденный распространяемый компонент C ++. Как оказалось, одним из наиболее распространенных случаев, вызывающих эту проблему, является сценарий, при котором либо отсутствует пакет Microsoft C ++ Redistributable 2017, либо тот, который в настоящее время установлен, поврежден. Чтобы решить эту конкретную проблему, необходимо убедиться, что вы правильно установили последнюю версию пакета Microsoft C ++ Redistributable 2017.
  • Устаревший графический драйвер. Еще одна потенциальная ситуация, которая может вызвать эту проблему, — это сильно устаревший драйвер графического процессора, из-за которого программному обеспечению OBS сложно поддерживать потоковое соединение с YouTube. В этом случае все, что вам нужно сделать, это установить последние доступные графические драйверы.
  • Конфликт с внутриигровым оверлеем. Если вы используете какое-либо программное обеспечение DVR, которое включает функцию наложения, скорее всего, оно будет конфликтовать с функцией кодировщика NVENC, используемой OBS. В этом случае вы можете разрешить конфликт, отключив функцию наложения в игре или удалив конфликтующее программное обеспечение.

Теперь, когда вы хорошо знакомы со всеми основными проблемами, которые могут вызвать ошибку «Не удалось начать потоковую передачу», вот список основных виновников, которые могут быть ответственны за появление этого кода ошибки:

Метод 1: установка распространяемых компонентов Microsoft C ++ для 2017 г.

Как оказалось, одна из наиболее важных зависимостей, потенциально способных вызвать эту проблему, — это отсутствующий или поврежденный пакет Microsoft C ++ Redistributable 2017. Имейте в виду, что этот пакет Visual C ++ чрезвычайно важен для обеспечения того, чтобы OBS могла устанавливать и поддерживать потоковое соединение с YouTube.

Если этот сценарий применим и вы подозреваете, что видите ошибку «Не удалось начать потоковую передачу», возникающую из-за проблемы с Visual C ++, вам следует удалить текущий пакет Reddit Visual C ++ 2017 (если он уже установлен) и выполнить новую установку. с официальных каналов Microsoft.

Вот краткое пошаговое руководство, которое проведет вас через весь процесс:

  1. Нажмите клавишу Windows + R, чтобы открыть диалоговое окно «Выполнить». Затем введите appwiz.cpl и нажмите Enter, чтобы открыть экран «Программы и компоненты».Открытие меню «Программы и компоненты»
  2. Зайдя в меню «Программы и компоненты», прокрутите список установленных программ и найдите запись, связанную с распространяемым пакетом Microsoft Visual C ++ 2017.
  3. Если вы обнаружите, что распространяемый компонент Microsoft Visual C ++ 2017 уже установлен, щелкните его правой кнопкой мыши и выберите «Удалить» в контекстном меню, чтобы от него избавиться.Удаление Microsoft Visual C ++ 2017

    Примечание. Если на вашем компьютере не установлен этот распространяемый пакет Visual C ++, пропустите этот и следующий шаг и переходите непосредственно к шагу 5.

  4. На экране удаления пакета Visual C ++ Redistributable 2017 следуйте инструкциям на экране, чтобы завершить установку, затем перезагрузите компьютер и дождитесь завершения следующего запуска.
  5. После того, как ваш компьютер загрузится, загрузите один из нижеуказанных пакетов Redist Visual C ++ 2017 в зависимости от архитектуры вашей ОС (32-разрядной или 64-разрядной):
    64-разрядный распространяемый компонент Visual C ++ 2017
    32-разрядный распространяемый компонент Visual C ++ 2017
  6. После завершения загрузки дважды щелкните недавно загруженный установщик vc_redist и нажмите Да, если появится запрос учетной записи пользователя UAC. Затем следуйте инструкциям на экране, чтобы завершить установку последней версии распространяемого пакета Microsoft Visual C ++ 2017.Установка Microsoft Visual C ++ 2017

Если эта проблема все еще не устранена или вы уже использовали последнюю версию Microsoft Visual C ++, перейдите к следующему потенциальному исправлению ниже.

Метод 2: обновление графических драйверов

Убедившись, что ошибка «Не удалось начать потоковую передачу» не возникает из-за отсутствия зависимости Visual C ++, следующее, что вам следует изучить, — это графические драйверы.

Как оказалось, некоторые затронутые пользователи говорят, что в их случае основная причина, по которой они не смогли установить потоковое соединение с OBS на Youtube, — это сильно устаревший экземпляр драйверов графического процессора.

В этом случае вы сможете решить проблему, следуя приведенным ниже инструкциям, чтобы обновить текущий драйвер графического процессора, чтобы гарантировать, что OBS имеет все необходимые зависимости для потоковой передачи контента на YouTube:

  1. Откройте диалоговое окно «Выполнить», нажав клавиши Windows + R. Затем введите «devmgmt.msc» и нажмите Enter, чтобы открыть утилиту «Диспетчер устройств». Когда появится запрос UAC (Контроль учетных записей пользователей), нажмите Да, чтобы предоставить доступ администратора.Открытие утилиты диспетчера устройств
  2. Когда вы, наконец, войдете в диспетчер устройств, прокрутите список установленных устройств вниз, затем разверните раскрывающееся меню, относящееся к адаптерам дисплея.
  3. После того, как вы развернете правильное меню, щелкните правой кнопкой мыши драйвер графического процессора, который вы активно используете для требовательных операций рендеринга, и выберите «Обновить драйвер» в только что появившемся контекстном меню.Обновление драйверов графического процессора через диспетчер устройств

    Примечание. Если вы столкнулись с проблемой на ноутбуке как с выделенным, так и со встроенным решением, мы рекомендуем обновить оба драйвера графического процессора до последней доступной версии.

  4. Как только вы перейдете к следующему экрану, нажмите на Автоматический поиск обновленного программного обеспечения драйвера.
    Автоматический поиск обновленного программного обеспечения драйвера
  5. Затем дождитесь завершения первоначального сканирования. затем продолжайте и следуйте инструкциям на экране, чтобы завершить установку новой версии драйвера (если определена новая версия).
  6. Если новая версия драйвера найдена и установлена, перезагрузите компьютер и повторите действие потоковой передачи в OBS после завершения следующего запуска, чтобы увидеть, устранена ли проблема.
    Примечание. Если Диспетчер устройств не может найти новую версию для замены текущей, вам также следует использовать проприетарную версию программного обеспечения для обновления от производителя вашей видеокарты, чтобы автоматически найти, загрузить и установить последнюю доступную версию:
    GeForce Experience — Nvidia
    Адреналин — AMD
    Драйвер Intel — Intel

Если вы уже обновили драйвер графического процессора до последней версии, но по-прежнему сталкиваетесь с той же проблемой, перейдите к следующему потенциальному исправлению ниже.

Метод 3: отключение внутриигрового оверлея

Имейте в виду, что если вы используете какое-то программное обеспечение DVR, которое записывает экран и использует какое-то наложение поверх вашего игрового процесса, очень высока вероятность того, что OBS будет конфликтовать с ним, когда они оба попытаются использовать Энкодер NVENC.

Если этот сценарий применим, вы можете решить проблему, отключив внутриигровой оверлей, конфликтующий с программным обеспечением OBS. В большинстве случаев подтверждается, что ошибка «Не удалось начать потоковую передачу» вызвана внутриигровым оверлеем Discord или Nvidia Overlay.

Если вы используете Discord или Nvidia Experience, следуйте инструкциям ниже, чтобы отключить на них функцию наложения.

Если вы используете другой сторонний инструмент наложения, следуйте под-руководству C, чтобы полностью удалить конфликтующее программное обеспечение с вашего компьютера.

A. Отключение функции наложения в Nvidia Experience

  1. Начните с выключения OBS, затем откройте Nvidia Experience. В следующем меню перейдите на вкладку Общие из списка доступных опций.
  2. Как только вы окажетесь в следующем меню, перейдите в левое меню и выключите переключатель, связанный с игровым оверлеем.Отключение функции наложения в игре
  3. После отключения опции сохраните изменения и закройте главное окно Nvidia Experience.
  4. Снова откройте программное обеспечение OBS и инициируйте еще одну попытку потоковой передачи, чтобы увидеть, устранена ли проблема.

Б. Отключение функции наложения в Discord

  1. Откройте приложение Discord обычным способом и вызовите основной интерфейс с помощью значка на панели задач.
    Примечание. Если вы видите экран сразу же, откройте панель задач и дважды щелкните значок, чтобы открыть окно Discord.
  2. Как только вы войдете в приложение Discord, найдите настройки пользователя (значок шестеренки) в нижней части окна.Доступ к пользовательским настройкам в Discord
  3. Как только вы окажетесь в меню настроек пользователя, нажмите вкладку «Наложение» в вертикальном меню слева (в разделе «Настройки приложения»).Меню настроек пользователя
  4. Как только вы окажетесь в меню Overlay, отключите переключатель, связанный с Enable in-game overlay.
    Включение внутриигрового оверлея
  5. Сохраните изменения, затем еще раз ODB и посмотрите, устранена ли проблема.

C. Удаление функции наложения из программ и компонентов

  1. Нажмите клавишу Windows + R, чтобы открыть диалоговое окно «Выполнить». Затем введите appwiz.cpl и нажмите Enter, чтобы открыть меню «Программы и компоненты».Открытие меню «Программы и компоненты»
  2. В меню «Программы и компоненты» прокрутите список установленных программ и найдите наложенное программное обеспечение, которое вы планируете удалить.
  3. Когда вы его увидите, щелкните его правой кнопкой мыши и выберите «Удалить» из появившегося контекстного меню.Удаление Nvidia Experience
  4. На экране удаления следуйте инструкциям на экране, чтобы завершить удаление, а затем перезагрузите компьютер.
  5. После завершения процедуры запустите игру еще раз и посмотрите, устранена ли проблема.

Right now I’m trying to figure out what i’m doing wrong when making transition of my YT broadcast to live.

So I make the request and get the following response:

{
  "code" : 403,
  "errors" : [ {
    "domain" : "youtube.liveBroadcast",
    "message" : "Invalid transition",
    "reason" : "invalidTransition",
    "extendedHelp" : "https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/transition#params"
  } ],
  "message" : "Invalid transition"
}

Of course i’ve read docs many times so I’ve monitored the LiveStream and was waiting for its «active» state (and my Broadcast has lifeCycleStatus=»ready»).

Error message doesn’t explain real reason why cannot I do the transition.
And… of course I do not have access to logs of Youtube servers :)

What can you suggest?
How to find out where am I wrong?

So even if i’ve missed something, docs and error message do not help me to understand anything. So anyway it is kind of a «bug» for YT LiveStreaming API…

  • Ошибка создания подписи не установлена или недействительна лицензия скзи криптопро
  • Ошибка создания счета internal error market cs go
  • Ошибка создания подписи не удается построить цепочку сертификатов для доверенного корневого центра
  • Ошибка создания сохраненных данных
  • Ошибка создания подписи набор ключей не существует 0x80090016