android調用系統相機進行視頻錄制並保存到指定目錄


最近在做視頻錄制上傳,調用的是系統的相機。

在做之前查了一些資料,發現好多人遇到保存到指定目錄不成功的現象。自己寫的時候就注意這些,最后發現他們遇到的問題我這邊根本沒有。可能是他們寫法有問題吧。

下邊是代碼: 

啟動的時候設置,

note: 偶爾發現一個bug,在nexus4上邊如果不設置

MediaStore.EXTRA_OUTPUT 這個屬性,在onActivityResult中對結果進行處理的時候intent是null;
    Intent captureImageCamera = new Intent(
                    MediaStore.ACTION_VIDEO_CAPTURE);
            Uri fileUri = getOutputMediaFileUri(MEDIA_TYPE_VIDEO);
            captureImageCamera.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);                //指定要保存的位置。
            //captureImageCamera.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, );            //設置拍攝的質量
            captureImageCamera.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 60);            //限制持續時長
            activity.startActivityForResult(captureImageCamera,
                    KEY_REQUEST_VIDEO, lisenter);

這樣設置就能將拍攝的視頻保存到指定目錄。

getOutputMediaFileUri這個方法請移步到http://developer.android.com/guide/topics/media/camera.html#intent-receive

 如果用上邊的方法出現不能保存的情況,可以在onActivityResult中嘗試以下方式解決

try {
                        AssetFileDescriptor videoAsset = getContentResolver().openAssetFileDescriptor(data.getData(), "r");
                        FileInputStream fis = videoAsset.createInputStream();
                        File tmpFile = new File(Environment.getExternalStorageDirectory(),"VideoFile.mp4"); 
                        FileOutputStream fos = new FileOutputStream(tmpFile);

                        byte[] buf = new byte[1024];
                        int len;
                        while ((len = fis.read(buf)) > 0) {
                            fos.write(buf, 0, len);
                        }       
                        fis.close();
                        fos.close();
                      } catch (IOException io_e) {
                        // TODO: handle error
                      }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM