日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android MediaRecorder录制视频提示start failed的解决办法

發布時間:2025/3/17 Android 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android MediaRecorder录制视频提示start failed的解决办法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自https://blog.csdn.net/w815878564/article/details/49247411

今天測試MediaRecorder錄制功能的時候出現一個蛋疼的BUG,按照官方提供的示例寫好之后,start居然報錯,打印日志一看說:start failed。

代碼如下:

?

[java]?view plaincopy
  • mCamera?=?Camera.open(0);??
  • surfaceView?=?new?SurfaceView(this);??
  • setContentView(surfaceView);??
  • mSurfaceHolder?=?surfaceView.getHolder();??
  • mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);??
  • mRecorder?=?new?MediaRecorder();??
  • mRecorder.setCamera(mCamera);??
  • mRecorder.setAudioSource(AudioSource.DEFAULT);??
  • mRecorder.setVideoSource(VideoSource.DEFAULT);??
  • mRecorder.setOutputFormat(OutputFormat.MPEG_4);??
  • mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);??
  • mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);??
  • mRecorder.setVideoSize(320,?240);??
  • mRecorder.setVideoFrameRate(20);??
  • mRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());??
  • File?file?=?new?File(Environment.getExternalStorageDirectory()??
  • ????????.getAbsolutePath()?+?"/test.mp4");??
  • if?(file.exists())??
  • {??
  • ????file.delete();??
  • }??
  • try??
  • {??
  • ????file.createNewFile();??
  • }?catch?(IOException?e1)??
  • {??
  • ????e1.printStackTrace();??
  • }??
  • ??
  • mRecorder.setOutputFile(file.getAbsolutePath());??
  • mSurfaceHolder.addCallback(new?Callback()??
  • {??
  • ??
  • ????@Override??
  • ????public?void?surfaceDestroyed(SurfaceHolder?holder)??
  • ????{??
  • ??
  • ????}??
  • ??
  • ????@Override??
  • ????public?void?surfaceCreated(SurfaceHolder?holder)??
  • ????{??
  • ????????try??
  • ????????{??
  • ????????????mRecorder.prepare();??
  • ????????????mRecorder.start();??
  • ????????}?catch?(Exception?e)??
  • ????????{??
  • ????????????Writer?writer?=?new?StringWriter();??
  • ????????????PrintWriter?printWriter?=?new?PrintWriter(writer);??
  • ????????????e.printStackTrace(printWriter);??
  • ????????????Throwable?cause?=?e.getCause();??
  • ????????????while?(cause?!=?null)??
  • ????????????{??
  • ????????????????cause.printStackTrace(printWriter);??
  • ????????????????cause?=?cause.getCause();??
  • ????????????}??
  • ????????????String?str?=?writer.toString();??
  • ????????????System.out.println(str);??
  • ????????}??
  • ????}??
  • ??
  • ????@Override??
  • ????public?void?surfaceChanged(SurfaceHolder?holder,?int?format,??
  • ????????????int?width,?int?height)??
  • ????{??
  • ??
  • ????}??
  • });??
  • 一般情況下呢,出現這個原因是由于系統不支持你所設置的分辨率碼率這些參數,因此首先需要檢查系統是否支持你所設置的參數,參數可以通過Camera的Parameter來進行判斷,調用如下:

    ?

    [java]?view plaincopy
  • mCamera.getParameters().getSupportedVideoSizes()??
  • ?

    但是有時候即使設置了正確的參數仍舊會出現這個錯誤,這時候可能你就需要再start之前調用一下下面這個方法了:

    ?

    [java]?view plaincopy
  • mCamera.unlock();??
  • 這個方法從方法名來看 是解鎖Camera ?估計是怕使用設備沖突了把 ,具體原因以后有空再去看看Camera相關API說明。因此對于這種情況 我覺得最好的做法是在獲取到Camera對象之后 進行一下如下操作:

    ?

    ?

    [java]?view plaincopy
  • mCamera.stopPreview();??
  • mCamera.setPreviewCallback(null);??
  • mCamera.setPreviewCallbackWithBuffer(null);??
  • mCamera.release();??
  • mCamera?=?null;??
  • mCamera?=?Camera.open(0);??
  • mCamera.lock();??
  • mCamera.unlock();??
  • 轉載于:https://www.cnblogs.com/yangjies145/p/9038279.html

    總結

    以上是生活随笔為你收集整理的Android MediaRecorder录制视频提示start failed的解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。