您的位置:首页 > 移动开发 > Android开发

[OpenGL]从零开始写一个Android平台下的全景视频播放器——5.8 使用MediaPlayer播放在线视频

2017-01-29 20:12 676 查看
Github项目地址

为了方便没有准备好梯子的同学,我把项目在CSDN上打包下载,不过不会继续更新(保留在初始版本)

回到目录

MediaPlayer是可以播放在线视频的,其解码能力取决于手机本身

如果有更多格式或更加通用的解码需求,可以考虑使用其他的解码器。例如FFMpeg就很好,可以使用FFMpeg的Java包装版本——ijkplayer

播放在线视频

播放在线视频的方法和本地视频基本一致,如果是本地视频,raw或者assets或者sdcard中的都是可以的,在线视频就说不好了

public void openRemoteFile(String path){
try{
mMediaPlayer.setDataSource(path);
}catch (IOException e){
e.printStackTrace();
}
}

public void setMediaPlayerFromUri(Uri uri){
try{
mMediaPlayer.setDataSource(statusHelper.getContext(),uri);
}catch (IOException e){
e.printStackTrace();
}
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setLooping(true);
}


上面的是在线视频,看起来差不多吧?如果用ijk调用方法类似但是不相同

调用方法如下(详见项目源代码):

if (uri.toString().startsWith("http"))
mPnoVideoPlayer.openRemoteFile(uri.toString());
else mPnoVideoPlayer.setMediaPlayerFromUri(uri);


这才是预览效果(感谢CSDN上传限制带来的渣画质)



写在最后

到这里为止我们已经实现了主流全景视频播放器的所有功能,当然,还有很多不够尽善尽美的地方。

可能有朋友已经发现,我花了大量的篇幅在讲解原理上,而具体实现的部分则比较简略甚至一笔带过。原因想必大家也都能理解——我希望我们都不要止步于“不求甚解”的阶段。“重复造轮子”固然不值得提倡,但是有些时候,“造轮子”的过程就是学习的过程。

还有一个比较重要的原因就是具体实现每个人本来就各有不同。其实现在回想一下,整个过程都不复杂,我们还大量借助了Android SDK提供的功能,工作量降低了不少呢,不是么?

我们花费大量时间去理解原理并且用OpenGL从零起步撸出了一个全景视频播放器,但是如果使用Unity3D等工具,播放一个全景视频可能只需要10分钟不到(改变culling方向)。为什么我们要做这些?这整个过程又有什么意义?

每个人应该都会有不同的答案…

至于我,我想用这句话来回答——Because we can!

Github项目地址

回到目录
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐