1.使用VideoView直接播放
xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".TestActivity">
<VideoView
android:id="@+id/vv_test"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true" />
</RelativeLayout>
Java:
public class TestActivity extends AppCompatActivity {
VideoView mVideoView;
private String uri = "rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
mVideoView = findViewById(R.id.vv_test);
mVideoView.setVideoURI(Uri.parse(uri));
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
}
});
mVideoView.requestFocus();
mVideoView.start();
}
}
2. 使用SurfaceView+MediaPlayer
XML:
<SurfaceView
android:id="@+id/surface_view"
android:layout_width="250dp"
android:layout_height="250dp"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
Java:
private MediaPlayer mediaPlayer;
private String uri = "rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4";
@Override
protected void onDestroyFrame() {
super.onDestroyFrame();
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();//停止音频的播放
}
mediaPlayer.release();//释放资源
}
@Override
protected void attachedToWindow() {
mediaPlayer = MediaPlayer.create(MainActivity.this, Uri.parse(uri));
binding.surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
mediaPlayer.setDisplay(holder);
//播放
mediaPlayer.start();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
});
}
3. 使用开源库NodeMediaClient-Android