【发布时间】:2014-12-24 04:38:20
【问题描述】:
我想问如何通过我的应用程序中的视频视图布局从我的应用程序中显示的网络摄像机的流式视频中捕获图像,当我单击一个按钮时,它将捕获视频视图中显示的图像。我使用 rtsp 协议 ip 摄像头..
package com.javacodegeeks.androidvideoviewexample;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.res.Configuration;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.widget.MediaController;
import android.widget.VideoView;
public class AndroidVideoViewExample extends Activity {
private VideoView myVideoView;
private int position = 0;
private ProgressDialog progressDialog;
private MediaController mediaControls;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get the layout from video_main.xml
setContentView(R.layout.activity_main);
if (mediaControls == null) {
mediaControls = new MediaController(AndroidVideoViewExample.this);
}
// Find your VideoView in your video_main.xml layout
myVideoView = (VideoView) findViewById(R.id.video_view);
// Create a progressbar
progressDialog = new ProgressDialog(AndroidVideoViewExample.this);
// Set progressbar title
progressDialog.setTitle("JavaCodeGeeks Android Video View Example");
// Set progressbar message
progressDialog.setMessage("Loading...");
progressDialog.setCancelable(false);
// Show progressbar
progressDialog.show();
try {
myVideoView.setMediaController(mediaControls);
myVideoView.setVideoURI(Uri.parse("rtsp://192.168.2.12/user=admin&password=&channel=1&stream=0.sdp?"));
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
myVideoView.requestFocus();
myVideoView.setOnPreparedListener(new OnPreparedListener() {
// Close the progress bar and play the video
public void onPrepared(MediaPlayer mp) {
progressDialog.dismiss();
myVideoView.seekTo(position);
if (position == 0) {
myVideoView.start();
} else {
myVideoView.pause();
}
}
});
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putInt("Position", myVideoView.getCurrentPosition());
myVideoView.pause();
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
position = savedInstanceState.getInt("Position");
myVideoView.seekTo(position);
}
}
这是我在这个小组中找到的编码,它工作得非常好......现在我想添加一个按钮来捕捉图像,
我发现我们可以使用 mediadataretriever 方法并将其保存到 sd 卡? 这是真的吗?
【问题讨论】:
-
您可以通过编程方式截取屏幕截图并将其裁剪并保存到卡片中
-
谢谢你的回答@Shink,我想把它留作最后一张纸牌,你有什么办法吗?
标签: android video-streaming ip-camera android-videoview