2011-02-01 3 views
8

C'è un modo per riprodurre un video da un flusso di byte in Android? Sto utilizzando uno specifico middleware di comunicazione, quindi non posso semplicemente passare il link http/rtsp all'oggetto MediaPlayer.il video in Android da un flusso di byte

Mi chiedevo se posso avvolgere la mia flusso con un link http/rtsp locale in modo da poter riprodurre il flusso, invece di aspettare fino a quando il file viene scaricato per riprodurlo.

mio middleware lavora su TCP così ho anche pensato che posso avvolgere la mia datagrammi RTSP con un datagram tcp e interpretarli sul client in qualche modo, dopo aver rimosso le intestazioni TCP.

Sono davvero sorpreso che non posso passare un flusso di byte al MediaPlayer. Grazie in anticipo.

+0

Questo è un argomento interessante ... Il modo migliore che posso pensare è la creazione di file temporanei nella directory di applicazione, come un modo per attuare una sorta di tampone. – mdelolmo

+4

Non puoi semplicemente passare alcuni byte ad un decoder e rendono decodificare foto .. a meno che sia flusso MPEG4 ... di quello che può far funzionare qualcosa. Puoi dirmi che tipo di flusso video è? Se è h264, che livello di profilo è? Hai SDP di esso? – Cipi

+0

Lo stavo provando con i file 3gp registrati con il telefono. Innanzitutto, ho provato a copiare il buffer in un file una volta ottenuto il minimo (circa 2000 KB), quindi creare un MediaPlayer con questo, ma prepararsi() si blocca quando lo si fa. Non so come creare una sessione SPD. La verità è che non so molto sulla decodifica. I collegamenti per i tutorial sarebbero apprezzati. Grazie per aver risposto – Pedriyoo

risposta

1

di streaming personalizzato in Android non è così facile come pensavo. Sono riuscito a farlo ma solo con video molto specifici. I video MPEG4 che sono mal interfogliati sembrano essere scorrevoli. Il più lontano che ho ottenuto è in streaming il video:

http://www.pocketjourney.com/downloads/pj/video/famous.3gp

Come Cipi mi rispose, la maggior parte dei formati possono non solo essere imballati in un buffer di byte e passarlo a MediaPlayer. Hanno bisogno di alcune intestazioni, code, ecc. Non sono sicuro di quale formato sia contenuto nel file di cui sopra, ma suppongo sia MPEG4.

+10

Potresti mostrare del codice? Sto anche cercando di fare la stessa cosa. –

+0

@Pedriyoo si puoi condividere per favore come l'hai fatto? – AFgone

+0

Non è possibile riprodurre 16kbps tramite la classe di media payer in Android –