2011-06-08 12 views
5

Nella mia applicazione ho bisogno di fornire all'utente un'anteprima su un download progressivo (file video).VideoView e download progressivo

Per ottenere ciò, sto utilizzando il componente VideoView per mostrare il contenuto del video (.mp4, .3gpp) che viene scaricato.

Il problema è che non posso accedere al supporto remoto via http:// o rtsp:// protocollo, quindi sono costretto a usare VideoView.setVideoPath per giocare copia locale del video durante il download.

Purtroppo sembra che su dispositivi Android che non possono utilizzare StageFright quadro (così OpenCore e alcuni Tegra2-based dispositivi nella mia esperienza), il VideoView non può gestire correttamente download progressivo: si può giocare solo la parte del video riconosciuto durante l'inizializzazione del componente.

Quindi, per essere chiari: se l'utente preme "play", quando solo il 5% del video è stato scaricato, VideoView mostrerà solo che il 5% dei video, non importa se più contenuti video ettari stato scaricato nel frattempo.

In base alla mia esperienza, questo problema non riguarda i dispositivi che utilizzano il framework StageFright (ad es. Nexus One 2.2, Nexus One 2.3.4).

Qualcuno può indicarmi una possibile soluzione? Grazie in anticipo

+0

Ciao, hai trovato il modo per risolvere questo bug? Ho avuto lo stesso errore. E adesso, sono bloccato. –

+0

Finalmente scopriamo il motivo come soluzione. [In qui] (http://stackoverflow.com/questions/19587880/sorry-this-video-is-not-valid-for-streaming-to-this-device-in-http-streaming-an) Grazie, –

risposta

1

VideoView è una classe pronta per l'uso in Android Application Framework per il caso di utilizzo di riproduzione video. Utilizza internamente la classe MediaPlayer per ottenere la riproduzione. MediaPlayer utilizza framework multimediali disponibili internamente in base a determinati criteri come il formato file, l'origine del contenuto, ecc.

Quindi la limitazione proviene dal framework sottostante e non da VideoView. Se sospetti ancora VideoView, scrivi la tua attività di video player utilizzando il lettore multimediale. Vedrai lo stesso risultato.

Inoltre, non tutte le versioni di Android (leggere come stagefright) supportano il download progressivo.

Può essere possibile utilizzare la classe DownloadManager per scaricare contenuto dal server http e fornire il percorso per la visualizzazione di lettore multimediale/video per una rapida anteprima.

Shash316

+0

Sì, il problema riguarda i diversi framework dei media sotto 'MediaPlayer' (e quindi sotto' VideoView'). Scaricare il video tramite un 'DownloadManager' non può fare il trucco (lo uso già), perché il problema è legato al modo in cui il buffer video viene gestito dal framework multimediale sottostante. Grazie comunque. –

2

Se si sta tentando di riprodurre .h264, è necessario spostare gli atomi MOV verso la parte anteriore del file. Questi dicono al codec la lunghezza del film, tra le altre cose.

provare qtfaststart

http://ffmpeg.zeranoe.com/builds/

+0

Ciao, hai trovato il modo di correggere questo bug? Ho avuto lo stesso errore. E adesso, sono bloccato. Ti piacerebbe darmi alcuni modi per completare questa attività, lo streaming di video con download progressivo.p/s: Posso codificare il video in .h264, caricarlo sul sito web e credo che anche il mio codice sia buono. Dispositivo: Samsung Galaxy 7 "2.2.1 –