Подтвердить что ты не робот

Показывать поток Twitch.tv в приложении unity3D

Я хотел бы сделать приложение Unity3D, в котором можно посмотреть текущий потоковый поток Twitch.tv.

Я не уверен, возможно ли это, например, с помощью twitch api (https://github.com/justintv/twitch-api)

Я знаю о видео-текстурах в Unity3D, и я знаю, как использовать основы twitch api по умолчанию, но у меня нет идеи о том, как интегрировать запущенный поток twitch в мое приложение.

Может кто-нибудь, пожалуйста, дайте мне подсказку, если это возможно?

Спасибо большое и с наилучшими пожеланиями Meph

4b9b3361

Ответ 1

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

Вы можете получить строки, сообщающие вам имя канала, игру и ссылки, чтобы доставить вас на канал. Вы также можете получить фон своего канала или превью в виде файлов изображений. То, что вы не можете сделать, это получить видеофайлы или потоковые видеоданные. Лучшее, что вы можете сделать, это получить URL-адреса и ссылку на них.

Единственный метод, который я могу придумать, чтобы получить Live Stream в любой игре, - это быть игроком. По сути, вы должны кодировать метод, посредством которого они могут передавать свою игру внутри самой игры, беря данные потока и копируя их в какую-то переменную или класс где-то, прежде чем она будет загружена в Twitch, поэтому вы можете использовать данные одновременно он транслируется. Но если вы хотите получить какой-то случайный стримерный игровой процесс и отобразить его на экране компьютера в своей игре, я боюсь, вы не сможете этого сделать. Во всяком случае, в Unity.

Ответ 2

  • Вы можете встроить поток твитов в веб-сайт.
  • Для Unity есть плагины веб-браузера (см.)

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

Ответ 3

В конечном итоге поток, поступающий из подергивания, является MPEG-4 (H264/M3U). Поэтому, если вы можете отобразить это в Unity, вы можете отображать потоки твитов.

Есть несколько шагов, чтобы получить правильные URL-адреса, запрашиваемые от подергивания, и которые могут меняться со временем. Вам нужно будет проверить текущую страницу твика во время воспроизведения потока, чтобы увидеть, как javascript строит запрос (url и headers).

В конце концов, javascript будет создавать токен доступа, а затем использовать его, чтобы запросить файл с именем index-live.m3u8 с одного из крайних серверов. Этот файл содержит список имен файлов за последние несколько секунд в реальном времени (и некоторые другие метаданные). Это выглядит примерно так.

https://video-edge-c61b44.lax01.hls.ttvnw.net/v0/[some-long-access-token]/index-live.m3u8

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:5
#ID3-EQUIV-TDTG:2017-10-27T16:53:27
#EXT-X-MEDIA-SEQUENCE:8788
#EXT-X-TWITCH-ELAPSED-SECS:17576.000
#EXT-X-TWITCH-TOTAL-SECS:17589.870
#EXTINF:2.000,
index-0000008788-Y6OH.ts
#EXTINF:2.000,
index-0000008789-l0QY.ts
#EXTINF:2.000,
index-0000008790-gCUV.ts
#EXTINF:2.000,
index-0000008791-1ngg.ts
#EXTINF:2.000,
index-0000008792-wpQL.ts
#EXTINF:2.000,
index-0000008793-koO4.ts

Затем вы меняете index-live.m3u8 с именем файла в списке и запрашиваете его для получения этого клипа. Что-то вроде:

https://video-edge-c61b44.lax01.hls.ttvnw.net/v0/[the-same-long-access-token]/index-0000008793-koO4.ts

Это будет поток MPEG-4 длиной около 1 секунды. Список содержит около 6 файлов, поэтому, если вы запросите их все, вы можете получить около 6-секундного буфера.

Каждые секунды или два, index-live.m3u8 обновляется, и старые файлы сбрасываются, когда новые добавляются снизу. Вам нужно повторно запросить этот файл каждые несколько секунд, пока закончится ваш буфер, и попросите новые клипы в нем, чтобы ваше воспроизведение продолжалось.

Ответ 4

Это сложная задача. Вам понадобится ключ API от Twitch, программа, которая может установить не только соединение с вашим выбранным API, но и поток данных. Я бы предложил начать с изучения базового сетевого программирования на менее специализированном языке, таком как C, и работать оттуда. После того, как вы поймете основы, вернитесь и задайте более конкретные вопросы. Я не могу так много сделать с этим вопросом в состоянии, в котором он находится.

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

Как только вы узнаете о сетевом программировании, я бы перескочил в twitch dev chat на API, нашел здесь