标签:
转载注明出处:http://blog.csdn.net/sk719887916/article/details/46582987
从<安卓TV开发(八) 移动智能终端多媒体之在线加载网页视频源> 中我总结了怎么去解析一个网页,获取里面数据实现展现,如何去播放视频呢,今天就给大家简单介绍下比较常用视频开源框架vitamio, 项目sdk地址:https://www.vitamio.org/en/ .
解压vitamio sdk 可以看到有个InitActivity的子模块,可以添加到我们的项目中,当然也可以copy代码到自己的项目中,之后我们播放的Activity继承initActivity即可,当然我们还需要用Vparser包将上篇文章解展现出的视频地址解析成真实地址用来播放,其代码如下。
public class PlayActivity extends Activity { private VideoView mVideoView; private String mUrl; private String path = ""; private String mRealUrl; private VParser mVParser; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (!LibsChecker.checkVitamioLibs(this)) return; setContentView(R.layout.activity_one); mVideoView = (VideoView) findViewById(R.id.surface_view); mRealUrl = "http://222.73.3.75/vkp.tc.qq.com/c0013ghdds8.mp4?vkey=CBA83E4B773DB0DBB3C5010896C3E4938C700EF47AC30134F2FD8C300E3D57B857508AF5A0418D53&br=66&platform=0&fmt=mp4&level=3"; mVideoView.setVideoPath(mRealUrl); // mVideoView.setMediaController(new MediaController(PlayActivity.this)); mVideoView.requestFocus(); mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer) { // optional need Vitamio 4.0 mediaPlayer.setPlaybackSpeed(1.0f); } }); mVParser = new VParser(this); if (getIntent().getStringExtra("url") != null) { mUrl = getIntent().getStringExtra("url"); //mUrl = "http://v.iask.com/v_play_ipad.php?vid=121242141"; new AsyncTask<Object, Void, Video>() { @Override protected Video doInBackground(Object... params) { return mVParser.parse(String.valueOf(params[0])); } @Override protected void onPostExecute(Video result) { super.onPostExecute(result); String title = result.title; if (result != null ) { mRealUrl = result.videoUri; Log.i("mPlay", "result.videoUri:" + mRealUrl ); } //String website = result.videoSiteUri; if (mRealUrl == null) { mRealUrl = "http://222.73.3.75/vkp.tc.qq.com/c0013ghdds8.mp4?vkey=CBA83E4B773DB0DBB3C5010896C3E4938C700EF47AC30134F2FD8C300E3D57B857508AF5A0418D53&br=66&platform=0&fmt=mp4&level=3"; } mRealUrl = "http://222.73.3.75/vkp.tc.qq.com/c0013ghdds8.mp4?vkey=CBA83E4B773DB0DBB3C5010896C3E4938C700EF47AC30134F2FD8C300E3D57B857508AF5A0418D53&br=66&platform=0&fmt=mp4&level=3"; mVideoView.setVideoPath(mRealUrl); // mVideoView.setMediaController(new MediaController(PlayActivity.this)); mVideoView.requestFocus(); mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer) { // optional need Vitamio 4.0 mediaPlayer.setPlaybackSpeed(1.0f); } }); } }.execute(mUrl); } } @SuppressLint("NewApi") private String getVideoRealUrl(String href) { Video video = new VParser(this).parse(href); // String videoTitle = video.title; String mRealUrl = null; if (video != null) { mRealUrl = video.videoUri; if (mRealUrl.isEmpty()) { return href; } else { return mRealUrl; } } return href; }
<merge xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:context=".PlayActivity" > <ScrollView android:id="@+id/login_form" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout style="@style/LoginFormContainer" android:orientation="vertical" > <io.vov.vitamio.widget.VideoView android:id="@+id/surface_view" android:layout_width="match_parent" android:layout_height="match_parent" /> <Button android:id="@+id/sign_in_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="播放" /> <TextView android:id="@+id/email" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="正在播出" android:maxLines="1" android:singleLine="true" /> <TextView android:id="@+id/password" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="" android:maxLines="1" android:singleLine="true" /> </LinearLayout> </ScrollView> </merge>
好了 至此简单的播放功能已完成,从开始的UI搭建,到加载服务器视频数据,到解析展现,到最后的播放,本系列只是简单的完成了整个流程,很多细节需要读者自己研究和完善,如果需要一些特殊宫功能建议自定义videoView,其可以继承SurfaceView implements MediaController.MediaPlayerControl ,具体代码可参考io.vov.vitamio.widget.VideoView。
版权声明:本文为博主原创文章,请尊重原创,转载请标明地址。
标签:
原文地址:http://blog.csdn.net/sk719887916/article/details/46582987