Hi Jason, perhaps you could help me with my code. I was trying to
capture video for two weeks now without success :(
This is my complete code
========================
public class VideoCapture extends Activity
implements SurfaceHolder.Callback {
private static final String TAG = "JTrek Video Capture";
private SurfaceView surfaceView;
private SurfaceHolder surfaceHolder;
private MediaRecorder recorder;
private String videoFile = "videotest.3gp";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
surfaceView = (SurfaceView)findViewById(R.id.surface);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setType
(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
setRequestedOrientation
(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
prepareVideoCapture();
}
public void prepareVideoCapture() {
/* Create a MediaRecorder */
recorder = new MediaRecorder();
Log.i(TAG, "Media recorder created");
try {
OutputStream stream = openFileOutput(videoFile,
MODE_WORLD_WRITEABLE);
stream.write(0xA);
stream.close();
} catch(IOException ioException) {
Log.e(TAG, "VIDEO: An error creating the output file.");
}
File file = getFileStreamPath(videoFile);
Log.i(TAG, "File exists? : " + file.exists());
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
recorder.setOutputFile(this.videoFile);
Log.i(TAG, "Media recorder parameters set");
recorder.setPreviewDisplay(surfaceHolder.getSurface());
Log.i(TAG, "Preview Display set to surface holder!");
}
//
============================================================================
// SURFACE CALLBACK IMPLEMENTATION
//
============================================================================
public void surfaceCreated(SurfaceHolder holder) {
Log.e(TAG, "surfaceCreated");
try {
recorder.prepare();
} catch (IllegalStateException e) {
Log.e(TAG, e.toString());
} catch (IOException e) {
Log.e(TAG, "THE ERROR IS HERE!: " + e.toString());
}
Log.i(TAG, "Media recorder prepared for video capture!");
try {
recorder.start();
} catch (IllegalStateException e) {
Log.e(TAG, e.toString());
}
Log.i(TAG, "Video capture started!!");
}
public void surfaceChanged(SurfaceHolder holder, int format, int
w, int h) {
Log.e(TAG, "surfaceChanged");
}
public void surfaceDestroyed(SurfaceHolder holder) {
Log.e(TAG, "surfaceDestroyed");
}
//
============================================================================
protected void onStop() {
// Stops the media recorder object
recorder.stop();
recorder.release();
Log.e(TAG, "onStop");
super.onStop();
}
}
And this is the LogCat I received when debugging:
=================================================
08-17 10:51:22.400: INFO/Video Capture(709): Media recorder created
08-17 10:51:22.450: INFO/Video Capture(709): File exists? : true
08-17 10:51:22.571: INFO/Video Capture(709): Media recorder parameters
set
08-17 10:51:22.581: INFO/Video Capture(709): Preview Display set to
surface holder!
08-17 10:51:23.132: ERROR/Video Capture(709): surfaceCreated
08-17 10:51:23.181: ERROR/Video Capture(709): THE ERROR IS HERE!:
java.io.FileNotFoundException: /videotest.3gp
08-17 10:51:23.191: INFO/Video Capture(709): Media recorder prepared
for video capture!
08-17 10:51:23.191: ERROR/MediaRecorder(709): start called in an
invalid state: 4
08-17 10:51:23.200: ERROR/Video Capture(709):
java.lang.IllegalStateException
08-17 10:51:23.210: INFO/Video Capture(709): Video capture started!!
08-17 10:51:23.210: ERROR/Video Capture(709): surfaceChanged
I am also wondering if it is mandatory to capture video in external
memory instead of internal memory?
Thanks in advance. I appreciate any help you can give me!..
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---