1. 程式人生 > >MediaRecorder: start failed: -22報錯的原因和解決方法

MediaRecorder: start failed: -22報錯的原因和解決方法

    今天在優化相機這塊的時候,看了下系統相機的原始碼,copy了部分用MediaRecorder來進行錄製的程式碼出來,呼叫start的時候一直拋異常:

MediaRecorder: start failed: -22

想了好久也不知道什麼,浪費了很長時間之後去百度了一下MediaRecorder詳細資訊和用法,最後才發現問題出來了初始化MediaRecorder的時候的呼叫順序上,MediaRecorder的API是有順序的,不按順序來就會拋異常,坑爹,特此記錄一下。一般的API使用順序為

        try {
        //要在例項化MediaRecorder之前就解鎖好相機
        mCamera.unlock();
        mMediaRecorder = new MediaRecorder();
        //將相機設定給MediaRecorder
        mMediaRecorder.setCamera(mCamera);
        // 設定錄製視訊源和音訊源
        mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
        mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
        // 設定錄製完成後視訊的封裝格式THREE_GPP為3gp.MPEG_4為mp4
        mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        // 設定錄製的視訊編碼和音訊編碼
        mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
        mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
        // 設定視訊錄製的解析度。必須放在設定編碼和格式的後面,否則報錯
        mMediaRecorder.setVideoSize(1920, 1080);
        // 設定錄製的視訊幀率。必須放在設定編碼和格式的後面,否則報錯
        mMediaRecorder.setVideoFrameRate(30);
        mMediaRecorder.setVideoEncodingBitRate(1024*1024*20);
        mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());
        // 設定視訊檔案輸出的路徑
        mMediaRecorder.setOutputFile( "/sdcard/lllllll.mp4");
        //暫停住   在外面就可以呼叫start進行錄製了
        mMediaRecorder.prepare();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    之前還遇到過MediaRecorder: start failed: -19的 這個錯誤是因為我們沒在例項化MediaRecorder之前解鎖相機導致

相關推薦

MediaRecorder: start failed: -22原因解決方法

    今天在優化相機這塊的時候,看了下系統相機的原始碼,copy了部分用MediaRecorder來進行錄製的程式碼出來,呼叫start的時候一直拋異常:MediaRecorder: start failed: -22想了好久也不知道什麼,浪費了很長時間之後去百度了一下Me

Tomcat各種原因解決方法彙總

部分內容轉載自網路 1、報錯:java.lang.IllegalAccessError: class org.xml.sax.helpers.SecuritySupport12 cannot access its superclass org.xml.sax.helpers

配置struts.xml時extends="struts-default"會,原因解決

檢測語言世界語中文簡體中文繁體丹麥語烏克蘭語烏茲別克語烏爾都語亞美尼亞語伊博語俄語保加利亞語信德語修納語僧伽羅語克羅埃西亞語冰島語加利西亞語加泰羅尼亞語匈牙利語南非祖魯語卡納達語盧森堡語印地語印尼巽他語印尼爪哇語印尼語古吉拉特語吉爾吉斯語哈薩克語土耳其語塔吉克語塞爾維亞語塞索托語夏威夷語威爾士語孟加拉語

配置struts.xml時extends="struts-default"會,原因解決

提示:此種解決方法只適用於Intellij IDEA,MyEclipse或者Eclipse還得另尋它法,但估計原因應該是類似的。 在Intellij IDEA 2017使用Struts2框架時,若新建專案時並未匯入Struts2框架而是在後期手動新建lib目錄匯入Struts2框架後,可

eclipse基於socket通訊某原因解決方法

最近在eclipse開發基於socket通訊方面,出現了一個錯誤 java.io.StreamCorruptedException: invalid stream header: 64000000

關於mybatis的動態if語句查詢問題解決方法

在mybatis類似於報錯 There is no getter for property named 'username' in 'class java.lang.String' 在不去掉if標籤的情況下 有2個解決方法 解決方法1 在.xml檔案

Error處理: android.media.MediaRecorder.start(Native Method) start failed: -19

bsp RM hand apt zygote utf use failed 解決方法 spydroid-android測試在android4.0系統上報錯 [html] view plain copy start failed: -19 而且也發現,在

angularJS$apply already in progress的原因解決方法

$apply eap module 關註 當前 typeof else ply 沒有 如果我們使用了AngularJS中的$scope.$apply()或者$scope.$digest(),我們很可能會遇到類似下面的錯誤,雖然這個錯誤沒有太大影響,但是在日誌中看起來還是很不

VxVM“Some volumes in the disk group are in use”的原因解決方法

在使用SYMANTEC的VxVM卷管理軟體時,執行vxdg deport磁碟組(disk group)時報錯“Some volumes in the disk group are in use”,形如: # vxdg deport testdg VxVM vxdg ERROR V-5-1-584 D

web開發 Tomcat啟動 5種解決方法 Server Tomcat v8.0 Server at localhost failed to start . 五種綜合解決方法

Eclipse 中Tomcat 啟動報錯 Eclipse的提示視窗  Server Tomcat v8.0 Server at localhost failed to start . 日誌輸出中報   Failed to destroy end point associa

rsync同步原因以及解決方案:

[[email protected] data]# rsync -avz rsync://[email protected]/www /data rsync: failed to connect to 192.168.17.13: Conne

No ‘Access-Control-Allow-Origin’ header is present on the requested resource 原因解決方案

跨域——Cross-Origin Resource Sharing 跨域請求:簡單說,不同域名之間可以請求到資料的行為; 報錯資訊: Failed to load https://example.com/: No ‘Access-Control-Allow-O

Dubbo配置問題____spring中dubbo標籤問題解決方案

//1.當在springxml中引用dubbo標籤時會報錯 windows-->preferrence-->xml->xmlcatalog-->add->catalog

R檔案原因解決辦法彙總

1、如果是匯入專案出現這個問題,一般是R檔案沒有更新造成(據說匯入專案,R不會自動更新)。可以Project——clean以下,R檔案會重新生成。 2、選擇工程,右鍵 Android Tools >> Fix Project Properties,

C#程式設計 MWArray 原因以及解決辦法

未能載入檔案或程式集“MWArray, Version=2.11.1.0, Culture=neutral….” 在C#和matlab的混合程式設計中,會呼叫Matalb中生成的動態連結庫,XXX.dll。在呼叫過程中會出現,錯誤資訊:“未能載入檔案或程式集“

Android Studio 原因以及解決辦法

1.Error running demo1: Instant Run requires ‘Tools | Android | Enable ADB integration’ to be enabled 這個錯誤簡單,只要翻譯一下就可以,需要開啟ADB inte

std::unique_ptr使用incomplete type的分析解決

`Pimpl`(Pointer to implementation)很多同學都不陌生,但是從原始指標升級到C++11的獨佔指標`std::unique_ptr`時,會遇到一個`incomplete type`的報錯,本文來分析一下報錯的原因以及分享幾種解決方法~ ## 問題現象 首先舉一個傳統C++中的`

MySQL的Illegal mix of collationsy異常原因解決方法

ear 代碼 clear 今天 tag 類型 資料 bsp net 原創 2008年12月25日 11:54:00 標簽: mysql / collation / character / variables / database / server 今天

[python]命令窗口顯示不是內部或外部命令的原因解決方法

命令 所在 dos 今天 屬性 add 系統 進入 文件 今天做習題時總是提示錯誤“不是內部或外部命令,也不是可運行的程序……” 於是上網搜索了一下出現這個錯誤的原因和解決方法,在此做個總結。 原因一:沒有設置PATH環境變量   Windows會根據設置的Path環境

Eslint整理與解決方法(持續整理)

保存 分享圖片 indent angle strong center vsc 刪掉 abs 1.‘Unexpected tab character’   字面意思理解呢就是意想不到的制表符,當時出現的時候就是我習慣的使用Tab鍵去打空格,但是eslint默認不認可Tab,所