Подтвердить что ты не робот

Pre-Load или Pre-Buffer.mp4 видео в разработке приложений для Android

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

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

Спасибо.

4b9b3361

Ответ 1

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

Вы можете использовать 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"

Ответ 3

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