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

歡迎訪問 生活随笔!

生活随笔

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

Android

安卓双摄像头录像_android开发之调用手机的摄像头使用MediaRecorder录像并播放_Android_脚本之家...

發布時間:2025/4/5 Android 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓双摄像头录像_android开发之调用手机的摄像头使用MediaRecorder录像并播放_Android_脚本之家... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們玩玩手機的錄像功能吧。做個DEMO。

看看錄制過程:

復制代碼 代碼如下:

mediarecorder = new MediaRecorder();// 創建mediarecorder對象

// 設置錄制視頻源為Camera(相機)

mediarecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

// 設置錄制完成后視頻的封裝格式THREE_GPP為3gp.MPEG_4為mp4

mediarecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

// 設置錄制的視頻編碼h263 h264

mediarecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);

// 設置視頻錄制的分辨率。必須放在設置編碼和格式的后面,否則報錯

mediarecorder.setVideoSize(176, 144);

// 設置錄制的視頻幀率。必須放在設置編碼和格式的后面,否則報錯

mediarecorder.setVideoFrameRate(20);

mediarecorder.setPreviewDisplay(surfaceView.getHolder().getSurface());

// 設置視頻文件輸出的路徑

lastFileName = newFileName();

mediarecorder.setOutputFile(lastFileName);

try {

// 準備錄制

mediarecorder.prepare();

// 開始錄制

mediarecorder.start();

} catch (IllegalStateException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

結束拍攝:

if (mediarecorder != null) {

// 停止

mediarecorder.stop();

mediarecorder.release();

mediarecorder = null;

}

貼出我自己的封裝類:

復制代碼 代碼如下:

package zyf.demo.moviedemo;

import java.io.File;

import java.io.IOException;

import java.util.Timer;

import java.util.TimerTask;

import android.media.MediaRecorder;

import android.view.SurfaceView;

public class MovieRecorder {

private MediaRecorder mediarecorder;

boolean isRecording;

public void startRecording(SurfaceView surfaceView) {

mediarecorder = new MediaRecorder();// 創建mediarecorder對象

// 設置錄制視頻源為Camera(相機)

mediarecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

// 設置錄制完成后視頻的封裝格式THREE_GPP為3gp.MPEG_4為mp4

mediarecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

// 設置錄制的視頻編碼h263 h264

mediarecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);

// 設置視頻錄制的分辨率。必須放在設置編碼和格式的后面,否則報錯

mediarecorder.setVideoSize(176, 144);

// 設置錄制的視頻幀率。必須放在設置編碼和格式的后面,否則報錯

mediarecorder.setVideoFrameRate(20);

mediarecorder.setPreviewDisplay(surfaceView.getHolder().getSurface());

// 設置視頻文件輸出的路徑

lastFileName = newFileName();

mediarecorder.setOutputFile(lastFileName);

try {

// 準備錄制

mediarecorder.prepare();

// 開始錄制

mediarecorder.start();

} catch (IllegalStateException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

isRecording = true;

timeSize = 0;

timer = new Timer();

timer.schedule(new TimerTask() {

@Override

public void run() {

// TODO Auto-generated method stub

timeSize++;

}

}, 0,1000);

}

Timer timer;

int timeSize = 0;

private String lastFileName;

public void stopRecording() {

if (mediarecorder != null) {

// 停止

mediarecorder.stop();

mediarecorder.release();

mediarecorder = null;

timer.cancel();

if (null != lastFileName && !””.equals(lastFileName)) {

File f = new File(lastFileName);

String name = f.getName().substring(0,

f.getName().lastIndexOf(“.3gp”));

name += “_” + timeSize + “s.3gp”;

String newPath = f.getParentFile().getAbsolutePath() + “/”

+ name;

if (f.renameTo(new File(newPath))) {

int i = 0;

i++;

}

}

}

}

public String newFileName() {

try {

return File.createTempFile(“/mov_”, “.3gp”).getAbsolutePath();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

return null;

}

}

public void release() {

if (mediarecorder != null) {

// 停止

mediarecorder.stop();

mediarecorder.release();

mediarecorder = null;

}

} }

那么同時 我們還會播放它:

復制代碼 代碼如下:

public void play(String fileName, SurfaceView view) {

mPlayer = new MediaPlayer();

mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

mPlayer.setDisplay(view.getHolder()); // 定義一個SurfaceView播放它

mPlayer.setOnCompletionListener(new OnCompletionListener() {

@Override

public void onCompletion(MediaPlayer arg0) {

stop();

// canvas.drawColor(Color.TRANSPARENT,

// PorterDuff.Mode.CLEAR);

}

});

try {

mPlayer.setDataSource(fileName);

mPlayer.prepare();

} catch (IllegalStateException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

mPlayer.start();

}

結束播放時:

public void stop() {

if (mPlayer != null) {

mPlayer.release();

mPlayer = null;

}

}

提供示例代碼下載

————

感謝那些分享技術經驗的人。

您可能感興趣的文章:

Android提高之MediaPlayer播放網絡音頻的實現方法

Android提高之MediaPlayer音視頻播放

深入Android MediaPlayer的使用方法詳解

android使用videoview播放視頻

android webvie指定視頻播放器播放網站視頻

android暫停或停止其他音樂播放器的播放實現代碼

Android實現歌曲播放時歌詞同步顯示具體思路

android播放視頻時在立體聲與單聲道之間切換無變化原因分析及解決

Android實現圖片循環播放的實例方法

Android提高之MediaPlayer播放網絡視頻的實現方法

總結

以上是生活随笔為你收集整理的安卓双摄像头录像_android开发之调用手机的摄像头使用MediaRecorder录像并播放_Android_脚本之家...的全部內容,希望文章能夠幫你解決所遇到的問題。

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