Pre-Load или Pre-Buffer.mp4 видео в разработке приложений для Android
Я создаю приложение, которое успешно отображает видеофайл MP4 onButtonClick. Я хочу предварительно загрузить или предварительно загрузить URI видео (удаленный url), чтобы он не задерживал воспроизведение видео после нажатия кнопки. Я хочу, чтобы он сразу же щелкнул и сыграл, так что предварительная загрузка или буферизация на всплывающем экране запуска приложения выглядит как подходящее решение. Единственное, что я не знаю, как это сделать. У меня есть тонны Android-книг, но вряд ли кто-то из них вообще покрывает буферизацию, или они только покрывают аудио.
Может ли кто-нибудь сообщить мне, как буферировать видео в предыдущем действии?
Спасибо.
Ответы
Ответ 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, если это приложение).