Domanda Pre-Load o Pre-Buffer video .mp4 nello sviluppo di app Android


Sto costruendo un'app che sta visualizzando correttamente un file video MP4 su ButtonClick. Voglio pre-buffer o precaricare l'URI del video (URL remoto) in modo da non ritardare la riproduzione del video dopo aver fatto clic sul pulsante. Voglio che clicchi e suoni subito, quindi il pre-caricamento o il buffering sullo schermo di avvio dell'app sembra una soluzione adatta. L'unica cosa è che non so come. Ho un sacco di libri Android, ma quasi nessuno di essi copre il buffering o copre solo l'audio.

Qualcuno può farmi sapere come bufferizzare il video su un'attività precedente?

Grazie.


20
2017-08-28 19:53


origine


risposte:


Google ha rilasciato ExoPlayer che fornisce un livello superiore per la riproduzione multimediale: http://developer.android.com/guide/topics/media/exoplayer.html

Supporta diversi stati come il buffering in background:

// 1. Instantiate the player.
player = ExoPlayer.Factory.newInstance(RENDERER_COUNT);
// 2. Construct renderers.
MediaCodecVideoTrackRenderer videoRenderer = …
MediaCodecAudioTrackRenderer audioRenderer = ...
// 3. Inject the renderers through prepare.
player.prepare(videoRenderer, audioRenderer);

L'ho usato nel mio progetto e sembra abbastanza efficiente. Anche Google ha fatto una demo completa del giocatore: https://github.com/google/ExoPlayer/tree/master/demo/src/main/java/com/google/android/exoplayer/demo/full che è più potente della semplice demo.


3
2017-12-09 14:33



Puoi utilizzare MediaPlayer per preparare il video, in questo modo:

mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setOnPreparedListener(<implementation of MediaPlayer.OnPreparedListener>);

mediaPlayer.setDataSource(dataSource);
mediaPlayer.prepareAsync();

Dopo la chiamata prepareAsync() il mediaplayer bufferizzerà il tuo video. Il MediaPlayer.OnPreparedListener.onPrepared() ti dirà se il mediaplayer è ancora pronto per giocare.

Basta controllare la bandiera preparata e chiamare mediaplayer.start() quando fai clic sul tuo pulsante "onButtonClick"


2
2017-11-14 03:26



Il browser Android nativo non archivia i file multimediali (audio o video), quindi non c'è modo di farlo su HTML5. Come @ bradenV2 ha detto, è possibile copiare il file in memoria (è possibile utilizzare PhoneGap se si tratta di un'app).


0
2018-05-28 21:05