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

歡迎訪問 生活随笔!

生活随笔

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

Android

Android Camera 预览及录制视频 附demo

發布時間:2023/12/18 Android 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android Camera 预览及录制视频 附demo 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. 打開Camera:
    • 2. 連接預覽:
    • 3. 啟動預覽:
    • 4. 啟動視頻錄像:
      • 4.1. 給Camera對象解鎖:
      • 4.2. 配置MediaRecorder對象:
        • 4.2.1. setCamera():
        • 4.2.2. setAudiioSource():
        • 4.2.3. setVideoSource():
        • 4.2.4. 設置視頻的輸出格式和編碼:
          • 4.2.4.I.setOutputFormat():
          • 4.2.4.II. setAudioEncoder():
          • 4.2.4.III.setVideoEncoder():
        • 4.2.5. setOutputFile():
        • 4.2.6. setPreviewDisplay():
        • 警告:
      • 4.3. 準備MediaRecorder對象:
      • 4.4. 啟動MediaRecorder對象:
    • 5. 停止視頻錄像:
      • 5.1. 停止MediaRecorder對象:
      • 5.2. 重置MediaRecorder對象:
      • 5.3. 釋放MediaRecorder對象:
      • 5.4. 鎖定Camera對象:
    • 6. 停止預覽:
    • 7. 釋放Camera對象:
    • GitHub地址如下:


使用Android框架采集視頻需要認真的管理Camera對象,以及跟MediaRecorder類的協調。當使用Camera對象記錄視頻時,除了Camera.open()和Camera.release()方法的調用以外,還必須管理Camera.lock()和Camera.unlock()方法的調用,從而允許MediaRecorder對象訪問Camera硬件。

采集視頻需要一定的調用順序,必須按照一個特定執行順序來準備和采集視頻,詳細如下:


1. 打開Camera:

使用Camera.open()方法來獲得一個Camera對象的實例。

2. 連接預覽:

使用Camera.setPreviewDisplay()方法把SurfaceView跟Camera連接起來,準備一個實時的Camera圖像預覽界面。
設置預覽中demo設置的是圓形的預覽框,詳情可參考繪制圓形surfaceview

3. 啟動預覽:

調用Camera.starPreview()方法開始顯示實時的Camera圖像。

4. 啟動視頻錄像:

為了成功的記錄視頻,必須完成以下步驟。

4.1. 給Camera對象解鎖:

通過調用Camera.unlock()方法給由MediaRecorder對象使用的Camera對象解鎖。

4.2. 配置MediaRecorder對象:

在這一步中要調用以下MediaRecorder方法。更多信息,請看MediaRecorder參考文檔。

4.2.1. setCamera():

使用應用程序當前的Camera實例,把它設置成用于視頻采集;

4.2.2. setAudiioSource():

使用MediaRecorder.AudioSource.CAMCORDER,設置音頻源;

4.2.3. setVideoSource():

使用MediaRecorder.VideoSource.CAMERA來設置視頻源;

4.2.4. 設置視頻的輸出格式和編碼:

對于Android2.2以上的版本,要使用MediaRecorder.setProfile方法,并且要私用CamcorderProfile.get()方法來獲得一個Profile的示例。對于Android2.2以前的版本,必須要設置視頻輸出的格式和編碼參數:

4.2.4.I.setOutputFormat():

設置輸出格式,指定默認設置,或者是MediaRecorder.OutputFormat.MPEG_4;

4.2.4.II. setAudioEncoder():

設置聲音的編碼類型,指定默認設置,或者是MediaRecorder.AudioEncoder.AMR_NB;

4.2.4.III.setVideoEncoder():

設置視頻的編碼類型,指定默認設置,或者是MediaRecorder.VideoEncoder.MPEG_4_SP;

4.2.5. setOutputFile():

設置輸出文件,可以使用下文“保存媒體文件”中的示例代碼中的getOutputMediaFile(MEDIA_TYPE_VIDEO).toString()方法來獲取輸出文件路徑。

4.2.6. setPreviewDisplay():

給應用程序指定SurfaceView的預覽布局。要使用與連接預覽相同的對象。

警告:

這步中必須要調用MediaRecorder的配置方法,否則你的應用程序將會發生錯誤,并且錄像也會失敗。

4.3. 準備MediaRecorder對象:

通過調用MediaRecorder.prepare()方法,準備給MediaRecorder對象提供的配置設置。

4.4. 啟動MediaRecorder對象:

通過調用MediaRecorder.star()方法來記錄視頻。

5. 停止視頻錄像:

在這步中要調用以下方法來成功完成視頻記錄:

5.1. 停止MediaRecorder對象:

通過調用MediaRecorder.stop()方法來停止視頻采集

5.2. 重置MediaRecorder對象:

可選操作,通過調用MediaRecorder.reset()方法來刪除記錄器的配置設置。

5.3. 釋放MediaRecorder對象:

調用MediaRecorder.release()方法來釋放MediaRecorder對象。

5.4. 鎖定Camera對象:

調用Camera.lock()方法來鎖定Camera對象,以便MediaRecorder會話能夠繼續使用它。從Android4.0(API Level 14)開始,這個調用不再需要了,除非MediaRecorder.prepare()方法調用失敗。

6. 停止預覽:

當Activity使用完Camera對象時,要使用Camera.stopPreview()方法來停止預覽。

7. 釋放Camera對象:

調用Camera.release()方法來釋放Camera對象,以便其他應用程序能夠使用它。

提示:如果你的應用程序被用于典型的視頻記錄,那么在啟動預覽期間,把setRecordingHint(boolean)方法設置為true,這樣有助于減少啟動采集所需要的時間。

我的Demo寫的比較簡單,原本是想只當做圓形預覽框的分享,后干脆加個錄視頻和嘗試預覽幀的處理。

GitHub地址如下:

https://github.com/qunqunstyle/multithreading

注:點擊圓框可錄制,可切換前后相機,這個demo只是為了示意預覽幀onPreviewframe回調和錄制視頻的流程,在兩者的切換時可能會有異常。

總結

以上是生活随笔為你收集整理的Android Camera 预览及录制视频 附demo的全部內容,希望文章能夠幫你解決所遇到的問題。

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