Quantcast
Channel: OpenCV Q&A Forum - Latest question feed
Viewing all articles
Browse latest Browse all 19555

Recording from JavaCameraView

$
0
0
I've been attempting to record the JavaCameraView for a few days now, to no avail. I'm trying to use MediaRecorder to record. I have a JavaCameraView in my layout file, have added a CvCameraViewListener as follows: mCameraView.enableView(); mCameraView.setCvCameraViewListener(this); where mCameraView = (CameraBridgeViewBase) findViewById(R.id.cameraPreview); and `R.id.camera_preview` is I am therefore getting a preview on the screen correctly, and `onCameraFrame` is being called. The problem I am having with using `MediaRecorder` and the `Camera` API to record is that `JavaCameraView.java` already has an instance of the camera open, and so I cannot open another one to record with. The `mCamera` object in `JavaCameraView`is protected, so I've attempted to make a class `CameraView` that extends JavaCameraView, and through there, call the `mCamera.lock()/mCamera/unlock()` methods needed. This isn't working either. My last resort was to record the surface instead, and this is being done as follows: // Step 1: Set sources mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT ); mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE); // Step 2: Set a CamcorderProfile (requires API Level 8 or higher) mMediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); // Step 3: Set output file (handled in CameraHelper) String date = CreateFiles.getDate(); mRootFolder = CreateFiles.getOutputFolder(date); Log.i(TAG, "Output folder is " + mRootFolder.toString()); mMediaFile = CreateFiles.getOutputMediaFile( CreateFiles.MEDIA_TYPE_VIDEO, mRootFolder, date); mDataFile = CreateFiles.getOutputDataFile(mRootFolder, date); mMediaRecorder.setVideoSize(mCameraView.getmFrameWidth(), mCameraView.getmFrameHeight()); mMediaRecorder.setOutputFile(mMediaFile.getPath()); mMediaRecorder.prepare(); mMediaRecorder.start(); However when I stop the MediaRecorder, it crashes with the following stack trace: **10-14 00:28:48.239 23590-23590/uk.ac.objecttracker E/MediaRecorder: stop failed: -1007 10-14 00:28:48.239 23590-23590/uk.ac.objecttracker D/AndroidRuntime: Shutting down VM 10-14 00:28:48.249 23590-23590/uk.ac.objecttracker E/AndroidRuntime: FATAL EXCEPTION: main Process: uk.ac.ed.faizan.objecttracker, PID: 23590 java.lang.AssertionError: java.lang.RuntimeException: stop failed. at uk.ac.objecttracker.CameraPreview.releaseMediaRecorder(CameraPreview.java:122) at uk.ac.objecttracker.TrackingActivity.onClick(TrackingActivity.java:127) at android.view.View.performClick(View.java:5702) at android.view.View$PerformClick.run(View.java:22541) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:158) at android.app.ActivityThread.main(ActivityThread.java:7229) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) Caused by: java.lang.RuntimeException: stop failed.** And I have no idea what gives. So now I'm asking for help here and would greatly appreciate anybody give some hints as to what I might be doing wrong in my code above, or how I can use the Camera to record (even though it's being used by JavaCameraView). Thanks a lot in advance.

Viewing all articles
Browse latest Browse all 19555

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>