簡體   English   中英

保存之前,Android Media Recorder預覽

[英]Android Media Recorder preview before saving

我正在使用MediaRecorder錄制帶有音頻的視頻,但是當您使用Camera拍攝照片時,可以將圖像保存到Bitmap並在保存之前顯示,我也想對視頻做同樣的事情-像Snapchat一樣,有沒有辦法? 我不想保存視頻,將其顯示,然后選擇刪除或保留它。

我正在使用以下代碼來錄制視頻:

    String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/SelfieLightCamera/";
    File dir = new File(path);
    if (!dir.exists())
        dir.mkdirs();
    String myFile = path + "Video_" + System.currentTimeMillis() + ".mp4";
    mediaRecorder = new MediaRecorder();
    mCamera.unlock();
    mediaRecorder.setCamera(mCamera);
    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
    mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
    mediaRecorder.setOutputFile(myFile);
    try {
        mediaRecorder.prepare();
    } catch (IllegalStateException e) {
        releaseMediaRecorder();
        e.printStackTrace();
    } catch (IOException e) {
        releaseMediaRecorder();
        e.printStackTrace();
    }
    mediaRecorder.start();

關於Android應用程序的最酷的事情是,您可以從手機中提取APK,然后反編譯軟件包以查看實際的Java代碼。 盡管它通常很模糊(例如Snapchat的情況),但是您仍然可以很好地了解應用程序的內部工作原理。

在研究Snapchat的工作方式時,我發現他們也像您一樣使用MediaRecorder,但是將文件保存到內部存儲中。 內部存儲意味着只有擁有該文件的應用才能訪問該文件。

以下幾行代碼可讓您大致了解Snapchat在后台進行的工作:

    mediaRecorder.setCamera(ay$b.b());
    mediaRecorder.setAudioSource(5);
    if (z) {
        mediaRecorder.setVideoSource(2);
    } else {
        mediaRecorder.setVideoSource(1);
    }
    mediaRecorder.setProfile(camcorderProfile);
    mediaRecorder.setVideoSize(i, i2);
    mediaRecorder.setMaxFileSize(bm.a());
    mediaRecorder.setVideoEncodingBitRate(bm.a(camcorderProfile));
    // Removed some code here…
    mediaRecorder.setOrientationHint(this.f);
    mediaRecorder.setMaxDuration(HttpService.DEFAULT_READ_TIMEOUT);
    mediaRecorder.setOutputFile(this.a.toString());
    if (this.c != null) {
        mediaRecorder.setPreviewDisplay(this.c);

您應該做的是正常錄制視頻並將其保存到內部存儲中。 如果您想“保留”它,只需將其移動到外部存儲中即可公開使用。 丟棄它意味着您只需將其從內部存儲中刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM