一、简介
经过上次课学习了VideoView播放本地视频跟音频后,自己就一直想尝试一下使用VideoView来播放网络视频,于是便去网上查找相关的资料,结果找到的大部分都是使用WebView来播放播放网络视频,与其说是使用WebView来播放视频,倒不如说它是用来播放视频的网页,并且把网页的其他部分给渲染掉,给人呈现出直接播放视频的假象。最后,功夫不负有心人,在经过各个网站的信息挖掘之后,自己也是找到了不少关于使用VideoView来播放网络视频的文章,但都是适合基础比较好的,故自己想写一篇文章来帮助我这种基础不好的学习者以后更加方便学习。
二、具体操作
1、添加权限
添加网络权限与读取本地文件的权限到 AndroidManifest.xml 文件中(具体权限功能请见注释)
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- 允许应用读取外部存储(如 SD 卡)上的文件。-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 允许应用写入外部存储(如 SD 卡)。-->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 允许应用连接到互联网,以发送和接收数据。-->
2、添加 VideoView 控件
<VideoView
android:id="@+id/videoView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
3、代码实现
public class MainActivity extends AppCompatActivity {
VideoView videoView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 播放网络视频
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); //全屏
try {
play_rtsp();
} catch (IOException e){
e.printStackTrace();
}// 尝试调用 play_rtsp(); 方法来播放RTSP流,并捕获可能抛出的 IOException。
// 设置暂停和开始
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// 视频播放完成后的操作
}
});
// 添加媒体控制器(可选),它提供了播放/暂停、音量控制等功能
MediaController mediaController1 = new MediaController(this);
videoView1.setMediaController(mediaController1);
// 监听视频准备播放事件(可选)
videoView1.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// 视频准备完成后可以执行的操作,例如开始播放
}
});
private void play_rtsp() throws IOException {
String videoUrl = "视频地址URL" ;
Uri uri = Uri.parse( videoUrl );
videoView = (VideoView)this.findViewById(R.id.videoView );
videoView.setVideoURI(uri);
videoView.requestFocus();
}
}
4、实现效果
三、总结
通过不断地学习,才可以找到解决方法。以上便是本博客的主要内容,使用VideoView来实现网络视频的播放,希望对看到的你能有一些帮助。