我正在构建一个成功在onButtonClick上显示MP4视频文件的应用。我想预先缓冲或预加载视频的URI(远程网址),以便在点击按钮后不会延迟播放视频。我想让它立即点击播放,因此在应用启动启动画面上预加载或缓冲似乎是一个合适的解决方案。唯一的问题是我不知道如何。我有很多Android书籍,但几乎没有任何书籍可以覆盖缓冲,或者它们只涵盖音频。
有人可以让我知道如何在之前的活动中缓冲视频吗?
感谢。
答案 0 :(得分:3)
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);
我在自己的项目中使用它,看起来很有效率。谷歌还制作了一个完整的玩家演示:https://github.com/google/ExoPlayer/tree/master/demo/src/main/java/com/google/android/exoplayer/demo/full,它比简单的演示更强大。
答案 1 :(得分: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()
&#34; onButtonClick&#34;
答案 2 :(得分:0)
原生Android浏览器不会缓冲媒体文件(音频或视频),因此无法在HTML5上执行此操作。正如@ bradenV2所说,您可以将文件复制到内存中(如果是应用程序,可以使用Phonegap)。