2016-01-18 33 views
13

Vorrei creare un'applicazione Unity3D in cui è possibile guardare un flusso live Twitch.tv corrente.Mostra flusso Twitch.tv all'interno di un'applicazione unity3D

Non sono sicuro se questo è possibile, ad esempio, con l'API contrazione (https://github.com/justintv/twitch-api)

che so di trame video in Unity3D e so come usare le basi api di default contrazione ma non lo faccio avere un'idea di come integrare un flusso di contrazioni in esecuzione nella mia applicazione.

Qualcuno può darmi un suggerimento se questo è possibile?

Grazie mille e cordiali saluti Meph

risposta

-1

Questa è una cosa difficile da fare. Avresti bisogno di una chiave API da Twitch, un programma in grado di stabilire non solo una connessione con l'API scelta, ma anche un flusso di dati. Vorrei suggerire di iniziare con l'apprendimento della programmazione di rete di base in un linguaggio meno specializzato come C, e lavorare da lì. Dopo aver compreso le nozioni di base, torna indietro e fai domande più specifiche. Non posso fare così tanto con questa domanda nello stato in cui si trova.

Come tutto il resto, questo è sicuramente possibile, solo forse non con C#. Per non distruggere le prestazioni del tuo gioco, ti suggerirei di scrivere un programma separato che alimenta i dati nel gioco senza che il gioco acquisisca direttamente i dati.

Una volta che si guadagna una comprensione della programmazione di rete, avrei un salto alla chat contrazione dev sulle API, trovato here

0

Credo che ciò che questa persona vuole sapere è se l'API Twitch in realtà recupera un live video feed e passa i dati attraverso l'applicazione. La risposta breve è, non è così. L'API Twitch non ti consente di fare un feed video dal vivo, ma ottieni solo le informazioni a riguardo.

È possibile ottenere stringhe che ti dicono il nome del canale, il gioco e i link per portarti al canale. Puoi anche ottenere lo sfondo del canale o le anteprime come file immagine. Quello che non puoi fare è ottenere file video o streaming di dati video. Il meglio che puoi fare è ottenere gli URL e collegarli a loro.

L'unico metodo che posso pensare per ottenere un flusso live in qualsiasi gioco è che sia del giocatore. Essenzialmente si codificherà in un metodo con il quale è possibile eseguire lo streaming del proprio gioco all'interno del gioco stesso, prendendo i dati del flusso e copiandoli in qualche variabile o classe da qualche parte, prima di essere caricati su Twitch, in modo da poter utilizzare i dati allo stesso tempo viene trasmesso Ma se vuoi recuperare il gameplay casuale di uno streamer e visualizzarlo sullo schermo di un computer nel tuo gioco, temo che non puoi farlo. Non in Unity, comunque.

0
  • è possibile incorporare un flusso contrazione in un sito web
  • Ci sono plugin del browser web per l'Unità (see)

Quindi, se si combinano queste idee, è possibile visualizzare un flusso contrazione in unità da eseguire un browser in-app che eseguirà una pagina Web personalizzata che incorpori lo stream che desideri. Non so che tipo di performance ne trarrai, ma sembra abbastanza semplice da fare. Probabilmente non è così semplice come mostrare direttamente lo stream su una texture, ma è almeno più semplice dell'apprendimento di C, della programmazione di rete, dell'elaborazione video e così via, come suggerito da Thomas.

0

In definitiva il flusso proveniente da contrazione è MPEG-4 (H264/M3U).Quindi, se puoi renderlo in Unity, puoi eseguire il rendering dei flussi di contrazione.

Ci sono alcuni passaggi per ottenere gli URL corretti richiesti da Twitch e che possono cambiare nel tempo. Dovrai ispezionare una pagina di contrazione corrente mentre è in esecuzione un flusso per vedere come il javascript costruisce la richiesta (url e intestazioni).

Alla fine, il javascript costruirà un token di accesso e quindi lo userà per richiedere un file chiamato index-live.m3u8 da uno dei server periferici. Quel file contiene un elenco di nomi di file per gli ultimi secondi del live streaming (e alcuni altri metadati). Sembra qualcosa di simile

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 

È quindi scambiare index-live.m3u8 con il nome di un file nella lista e gli chiede di ottenere che il clip. Qualcosa di simile:

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

Sarà un flusso MPEG-4 circa 1 secondo. L'elenco ha una lunghezza di circa 6 file, quindi se li richiedi tutto, puoi ottenere circa un buffer di 6 secondi.

Ogni secondo o due, index-live.m3u8 viene aggiornato e i file meno recenti si disattivano mentre quelli nuovi vengono aggiunti in fondo. È necessario richiedere nuovamente questo file ogni pochi secondi mentre il buffer si esaurisce e richiedere i nuovi clip al suo interno per mantenere attiva la riproduzione.