Android应用开发中的Pre-Load或Pre-Buffer .mp4视频

问题描述 投票:21回答:3

我正在构建一个成功在onButtonClick上显示MP4视频文件的应用程序。我想预先缓冲或预加载视频的URI(远程网址),以便在点击按钮后不会延迟播放视频。我想让它立即点击播放,因此在应用启动启动画面上预加载或缓冲似乎是一个合适的解决方案。唯一的问题是我不知道如何。我有很多Android书籍,但几乎没有任何书籍可以覆盖缓冲,或者它们只涵盖音频。

任何人都可以让我知道如何缓冲以前活动的视频?

谢谢。

android video uri buffer mp4
3个回答
3
投票

谷歌发布了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);

我在自己的项目中使用它,看起来很有效率。谷歌还制作了一个完整的演示版本: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()将告诉您媒体播放器是否已准备好播放。

只需检查准备好的标志,并在单击“onButtonClick”按钮时调用mediaplayer.start()


0
投票

原生Android浏览器不会缓冲媒体文件(音频或视频),因此无法在HTML5上执行此操作。正如@ bradenV2所说,您可以将文件复制到内存中(如果是应用程序,可以使用Phonegap)。

© www.soinside.com 2019 - 2024. All rights reserved.