Note that there are some explanatory texts on larger screens.

plurals
  1. POGetting error Start failed -16 while starting MediaRecorder in Android
    primarykey
    data
    text
    <p>I am new to advanced technologies like Video recording in android. I am trying to create a simple application to record video.</p> <p>This is the following code, I have used to record video.</p> <pre><code> private PrintWriter out = null; private final MediaRecorder mediaRecorder = new MediaRecorder(); private final Camera camera = getCameraInstance(); private CameraPreview surfaceView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); surfaceView = new CameraPreview(this, camera); FrameLayout frameLayout = (FrameLayout)findViewById(R.id.frameLayout); frameLayout.addView(surfaceView); Parameters params = camera.getParameters(); List&lt;Size&gt; sizes = params.getSupportedPreviewSizes(); Size optimalSize = getOptimalPreviewSize(sizes, 200, 200); params.setPreviewSize(optimalSize.width, optimalSize.height); mediaRecorder.setCamera(camera); mediaRecorder.setPreviewDisplay(surfaceView.getHolder().getSurface()); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER); mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP); mediaRecorder.setVideoSize(optimalSize.width, optimalSize.height); mediaRecorder.setOutputFile("/sdcard/test.mpg"); } </code></pre> <p>And I am calling the start() Method inside onClick() method of a button</p> <pre><code>public void startRecording(View view){ try { mediaRecorder.start(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); releaseMediaRecorder(); } catch(Exception e){ e.printStackTrace(); releaseMediaRecorder(); } } </code></pre> <p>And this is my SurfaceView Code</p> <pre><code>/** A basic Camera preview class */ public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback { private SurfaceHolder mHolder; private final Camera mCamera; private final Context context; public CameraPreview(Context context, Camera camera) { super(context); mCamera = camera; this.context = context; mHolder = getHolder(); mHolder.addCallback(this); mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } public void surfaceCreated(SurfaceHolder holder) { try { mCamera.setPreviewDisplay(holder); mCamera.startPreview(); } catch (IOException e) { Log.d(this.getClass().getName(), "Error setting camera preview: " + e.getMessage()); e.printStackTrace(); } } public void surfaceDestroyed(SurfaceHolder holder) { if(context instanceof MainActivity){ ((MainActivity)context).stopMediaPlayer(); } } public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { if (mHolder.getSurface() == null){ return; } try { mCamera.stopPreview(); } catch (Exception e){ // ignore: tried to stop a non-existent preview } try { mCamera.setPreviewDisplay(mHolder); mCamera.startPreview(); if(context instanceof MainActivity){ ((MainActivity)context).prepareMediaPlayer(); } } catch (Exception e){ Log.d(this.getClass().getName(), "Error starting camera preview: " + e.getMessage()); e.printStackTrace(); } } } </code></pre> <p>And I am getting the following error</p> <pre><code>08-01 16:17:39.121: I/MediaRecorderJNI(29423): prepare: surface=0x202790 (identity=1681) 08-01 16:17:44.911: E/MediaRecorder(29423): start failed: -16 08-01 16:17:44.911: W/System.err(29423): java.lang.RuntimeException: start failed. 08-01 16:17:44.911: W/System.err(29423): at android.media.MediaRecorder.start(Native Method) 08-01 16:17:44.911: W/System.err(29423): at com.sample.recorder.MainActivity.startRecording(MainActivity.java:149) 08-01 16:17:44.911: W/System.err(29423): at java.lang.reflect.Method.invokeNative(Native Method) 08-01 16:17:44.911: W/System.err(29423): at java.lang.reflect.Method.invoke(Method.java:507) 08-01 16:17:44.911: W/System.err(29423): at android.view.View$1.onClick(View.java:2163) 08-01 16:17:44.911: W/System.err(29423): at android.view.View.performClick(View.java:2552) 08-01 16:17:44.911: W/System.err(29423): at android.view.View$PerformClick.run(View.java:9229) 08-01 16:17:44.911: W/System.err(29423): at android.os.Handler.handleCallback(Handler.java:587) 08-01 16:17:44.911: W/System.err(29423): at android.os.Handler.dispatchMessage(Handler.java:92) 08-01 16:17:44.911: W/System.err(29423): at android.os.Looper.loop(Looper.java:130) 08-01 16:17:44.911: W/System.err(29423): at android.app.ActivityThread.main(ActivityThread.java:3701) 08-01 16:17:44.911: W/System.err(29423): at java.lang.reflect.Method.invokeNative(Native Method) 08-01 16:17:44.911: W/System.err(29423): at java.lang.reflect.Method.invoke(Method.java:507) 08-01 16:17:44.911: W/System.err(29423): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) 08-01 16:17:44.911: W/System.err(29423): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624) 08-01 16:17:44.911: W/System.err(29423): at dalvik.system.NativeStart.main(Native Method) 08-01 16:17:44.921: I/com.sample.recorder.MainActivity(29423): Media Recorder released successfully. </code></pre> <p>In that error code, 1st line is printed when the activity gets loaded, the remaining lines produced when tapping on start button which internally call the startRecording() function</p> <p>Permissions used in AndroidManifestFile</p> <pre><code>&lt;uses-permission android:name="android.permission.INTERNET" /&gt; &lt;uses-permission android:name="android.permission.CAMERA" /&gt; &lt;uses-feature android:name="android.hardware.camera" /&gt; &lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&gt; &lt;uses-permission android:name="android.permission.RECORD_AUDIO" /&gt; &lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /&gt; &lt;uses-permission android:name="android.permission.STORAGE" /&gt; </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload