Как передать видео с IP-камеры в LiveStream на Youtube? - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь отправить видео, снятое с IP-камеры (поток с IP-камеры ) через vlcj .Мой поток может быть получен с http://<phoneIP>:8080/video

Как я могу отправить видео через Java на YT, используя YouTube Streaming API?

Я видел документацию о Youtube Streaming Api и Youtube Data Api v3 , и, безусловно, мне удалось загрузить видео на мой канал, используя предоставленный ими код.

public static void main(String[] args) throws GeneralSecurityException, IOException, GoogleJsonResponseException {
    YouTube youtubeService = getService();

    // Define the Video object, which will be uploaded as the request body.
    Video video = new Video();

    // Add the snippet object property to the Video object.
    VideoSnippet snippet = new VideoSnippet();
    Random rand = new Random();
    snippet.setCategoryId("22");
    snippet.setDescription("Description of uploaded video.");
    snippet.setTitle("Test video upload. "+ rand.nextInt());
    video.setSnippet(snippet);

    // Add the status object property to the Video object.
    VideoStatus status = new VideoStatus();
    status.setPrivacyStatus("unlisted");
    video.setStatus(status);

    File mediaFile = new File(FILE_PATH);
    InputStreamContent mediaContent = new InputStreamContent("video/*",
                new BufferedInputStream(new FileInputStream(mediaFile)));
    mediaContent.setLength(mediaFile.length());

    // Define and execute the API request
    YouTube.Videos.Insert request = youtubeService.videos().insert("snippet,status", 
                video, mediaContent);
    Video response = request.execute();
    System.out.println(response);
}

Но в представленном ими коде о создание живого потока не представлена ​​та часть, где вы фактически транслируете некоторый контент.

Спасибо!

РЕДАКТИРОВАТЬ 1 25.06.2019 / 17: 00

Я нашел поле с именем адрес для загрузки и заполнил его следующим образом: cdn.setIngestionInfo(new IngestionInfo().setIngestionAddress("http://192.168.0.100:8080/video"));, но в YouTube Studio при запуске приложения ничего не отображается (как видно на фотографии ниже) YouTube Studio after LiveStream insert

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

public static void main(String[] args)
    throws GeneralSecurityException, IOException, GoogleJsonResponseException {
    YouTube youtubeService = getService();

    // Define the LiveBroadcast object, which will be uploaded as the request body.
    LiveBroadcast liveBroadcast = new LiveBroadcast();
    LiveStream liveStream = new LiveStream();

    // Add the contentDetails object property to the LiveBroadcast object.
    LiveBroadcastContentDetails contentDetails = new LiveBroadcastContentDetails();
    contentDetails.setEnableClosedCaptions(true);
    contentDetails.setEnableContentEncryption(true);
    contentDetails.setEnableDvr(true);
    contentDetails.setEnableEmbed(true);
    contentDetails.setRecordFromStart(true);
    liveBroadcast.setContentDetails(contentDetails);

    // Add the snippet object property to the LiveBroadcast object.
    LiveBroadcastSnippet snippet = new LiveBroadcastSnippet();
    snippet.setScheduledStartTime(new DateTime("2019-06-25T17:00:00+03:00"));
    snippet.setScheduledEndTime(new DateTime("2019-06-25T17:05:00+03:00"));
    snippet.setTitle("Test broadcast");
    liveBroadcast.setSnippet(snippet);

    // Add the status object property to the LiveBroadcast object.
    LiveBroadcastStatus status = new LiveBroadcastStatus();
    status.setPrivacyStatus("unlisted");
    liveBroadcast.setStatus(status);

    // Define and execute the API request
    YouTube.LiveBroadcasts.Insert request = youtubeService.liveBroadcasts()
        .insert("snippet,contentDetails,status", liveBroadcast);
    LiveBroadcast response = request.execute();
    System.out.println(response);
}

После запуска кода сверху я получил такой результат на YouTube Studio: YouTube Studio after LiveBroadcast insert

Теперь я не знаю, как объединить два или как интегрировать LiveStream в LiveBroadcast, чтобы я мог транслировать контент со своего телефона.

Еще раз спасибо!

РЕДАКТИРОВАТЬ 2 25.06.2019 / 17: 25

Я нашел функцию, которая может привязать поток к трансляции, но когда я открываю Live Control Room, я получаю это:

Live Control Room after bind

Все еще не удалось связать их, но я думаю, что я все ближе, может кто-то подтолкнуть меня в правильном направлении?

1 Ответ

1 голос
/ 17 июня 2019

LiveStream - это своего рода коллекция метаданных, которую API YouTube использует для информирования о вашем потоке и для хранения информации о нем.

Часть информации - это URL-адрес CDN, на который вы должны отправить реальный видеопоток с камеры (с https://developers.google.com/youtube/v3/live/docs/liveStreams)

).

enter image description here

Вы можете увидеть ответ здесь с примером использования здесь: https://stackoverflow.com/a/29653174/334402

...