Pre-Load или Pre-Buffer .mp4 видео в разработке приложений для Android - PullRequest
22 голосов
/ 28 августа 2011

Я создаю приложение, которое успешно отображает видеофайл MP4 на ButtonClick.Я хочу предварительно буферизовать или предварительно загрузить URI видео (удаленный URL), чтобы оно не задерживало воспроизведение видео после нажатия кнопки.Я хочу, чтобы он сразу щелкнул и начал играть, поэтому предварительная загрузка или буферизация на заставке запуска приложения кажется подходящим решением.Единственное, что я не знаю как.У меня есть тонны Android-книг, но вряд ли они вообще касаются буферизации или только аудио.

Может кто-нибудь дать мне знать, как буферизовать видео на предыдущем занятии?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 09 декабря 2014

Google выпустил ExoPlayer, который обеспечивает более высокий уровень воспроизведения мультимедиа: http://developer.android.com/guide/topics/media/exoplayer.html

Он поддерживает различные состояния, такие как буферизация в фоновом режиме:

// 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);

Я использовал его в своем собственном проекте, и он кажется довольно эффективным. Также Google сделал полную демо-версию плеера: https://github.com/google/ExoPlayer/tree/master/demo/src/main/java/com/google/android/exoplayer/demo/full, которая является более мощной, чем простая демоверсия.

2 голосов
/ 14 ноября 2014

Вы можете использовать MediaPlayer для подготовки видео, например:

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

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

После вызова prepareAsync() медиаплеер будет буферизовать ваше видео.MediaPlayer.OnPreparedListener.onPrepared() сообщит вам, готов ли медиаплеер к игре.

Просто проверьте готовый флаг и позвоните mediaplayer.start(), когда вы нажмете кнопку "onButtonClick"

0 голосов
/ 29 мая 2013

Собственный браузер Android не буферизирует медиафайлы (аудио или видео), поэтому в HTML5 нет способа сделать это. Как сказал @ bradenV2, вы можете скопировать файл в память (вы можете использовать Phonegap, если это приложение).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...