2016-01-18 11 views
13

Ich möchte eine Unity3D-Anwendung machen, in der man einen aktuellen Twitch.tv-Livestream sehen kann.Zeige Twitch.tv stream innerhalb einer unity3D-Anwendung

Ich bin nicht sicher, ob dies möglich ist, beispielsweise mit dem Zucken api (https://github.com/justintv/twitch-api)

Ich weiß, über die Video-Texturen in Unity3D und ich weiß, wie die Standard-Twitch api Grundlagen zu verwenden, aber ich weiß nicht habe eine Idee, wie man einen laufenden Twitch-Stream in meine Anwendung integriert.

Kann mir bitte jemand einen Hinweis geben, wenn das möglich ist?

Vielen Dank und viele Grüße Meph

Antwort

-1

Dies ist eine schwierige Sache zu tun. Sie benötigen einen API-Schlüssel von Twitch, einem Programm, das nicht nur eine Verbindung mit der von Ihnen gewählten API, sondern auch einen Datenstrom herstellen kann. Ich würde vorschlagen, mit dem Lernen der grundlegenden Netzwerkprogrammierung in einer weniger spezialisierten Sprache wie C zu beginnen und von dort zu arbeiten. Nachdem Sie die Grundlagen verstanden haben, kommen Sie bitte zurück und stellen Sie spezifischere Fragen. Ich kann nicht viel mit dieser Frage in dem Staat tun, in dem es ist.

Wie bei allem anderen ist dies definitiv möglich, nur vielleicht nicht mit C#. Um die Leistung Ihres Spiels nicht zu zerstören, würde ich vorschlagen, ein separates Programm zu schreiben, das die Daten in das Spiel einspeist, ohne dass das Spiel direkt Daten erfasst.

Sobald Sie ein Verständnis von Netzwerkprogrammierung gewinnen, würde ich über zum Zucken dev-Chat auf der API-Hop, fand here

0

Ich glaube, was diese Person wissen möchte, ist, ob die Twitch API ein tatsächlich abruft Live-Video-Feed und leitet die Daten an die Anwendung. Die kurze Antwort ist, es tut es nicht. Mit der Twitch-API können Sie keinen Live-Video-Feed aufnehmen, sondern erhalten nur die Informationen dazu.

Sie können Strings erhalten, die Ihnen den Namen des Kanals, das Spiel und die Links mitteilen, die Sie zum Kanal führen. Sie können auch ihren Kanalhintergrund oder Vorschaubilder als Bilddateien erhalten. Was Sie nicht tun können, ist, Videodateien zu erhalten oder Videodaten zu streamen. Das Beste, was Sie tun können, ist, die URLs zu erhalten und mit ihnen zu verlinken.

Die einzige Methode, die ich mir vorstellen kann, um einen Live-Stream in jedem Spiel zu bekommen, ist, dass es der Spieler ist. Im Wesentlichen würden Sie eine Methode programmieren, mit der sie ihr Spiel innerhalb des Spiels selbst streamen können, indem sie die Stream-Daten in eine Variable oder Klasse kopieren, bevor sie zu Twitch hochgeladen werden, sodass Sie die Daten gleichzeitig verwenden können es wird ausgestrahlt. Aber wenn du das Gameplay einiger zufälliger Streamer abrufen und auf einem Computerbildschirm in deinem Spiel anzeigen möchtest, kann ich das leider nicht tun. Jedenfalls nicht in Unity.

0
  • Sie können ein Zucken Strom in eine Website einbetten
  • Es gibt Web-Browser-Plugins für Unity (see)

Also, wenn Sie diese Ideen kombinieren, können Sie ein Zucken Strom in der Einheit zeigen, indem sie Ausführen eines In-App-Browsers, der eine benutzerdefinierte Webseite ausführt, die den gewünschten Stream einbindet. Ich weiß nicht, welche Art von Performance du daraus bekommst, aber das klingt einfach genug zu tun. Es ist wahrscheinlich nicht so einfach, den Stream direkt auf einer Textur darzustellen, aber es ist zumindest einfacher als C zu lernen, Netzwerkprogrammierung, Videoverarbeitung und so weiter, wie Thomas es vorgeschlagen hat.

0

Letztendlich ist der Strom von zuckenden MPEG-4 (H264/M3U).Wenn Sie das also in Unity rendern können, können Sie Twitch-Streams rendern.

Es gibt ein paar Schritte, um die richtigen URLs von Twitch angefordert, und das kann sich im Laufe der Zeit ändern. Sie müssen eine aktuelle Twitch-Seite überprüfen, während ein Stream abgespielt wird, um zu sehen, wie das Javascript die Anfrage erstellt (URL und Header).

Am Ende erstellt das Javascript ein Zugriffs-Token und verwendet es dann, um eine Datei namens index-live.m3u8 von einem der Twitch-Edge-Server anzufordern. Diese Datei enthält eine Liste von Dateinamen für die letzten Sekunden des Live-Streams (und einige andere Metadaten). Es sieht so etwas wie dieses

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 

Sie tauschen dann index-live.m3u8 mit dem Namen einer Datei in der Liste und fordert ihn auf diesen Clip zu bekommen. Etwas wie:

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

Es wird ein MPEG-4-Stream etwa 1 Sekunde lang sein. Die Liste ist ungefähr 6 Dateien lang, also wenn Sie sie alle anfordern, können Sie ungefähr einen Puffer der Sekunde 6 erhalten.

Jede Sekunde oder zwei, index-live.m3u8 wird aktualisiert und ältere Dateien abrollen, wenn neue unten hinzugefügt werden. Sie müssen diese Datei alle paar Sekunden erneut anfordern, wenn der Pufferspeicher erschöpft ist, und die neuen Clips anfordern, um die Wiedergabe fortzusetzen.

Verwandte Themen