[英]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.