toshi
unread,Feb 17, 2011, 11:45:06 AM2/17/11Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to 日本Androidの会
こんにちわ。
吉田と申します。
現在、カメラから動画を撮影して保存するアプリを開発しています。
撮影自体はできるのですが、解像度の変更がどうしてもうまくいきません。
setVideoSizeで設定するように考えていましたが、
この数値を変更しても取得できる動画の解像度に変化がありません。。。
何か全く別の部分で設定すべきなのでしょうか?
以下が、今の実装コードになります。
↓
------------------------------------------------
package test.video;
import java.io.File;
import android.os.Environment;
import android.content.Context;
import android.media.MediaRecorder;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class RecordView extends SurfaceView implements
SurfaceHolder.Callback{
private MediaRecorder recorder;
private boolean isRecord;
public RecordView(Context context){
super(context);
isRecord = false;
SurfaceHolder holder = getHolder();
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public void surfaceCreated(SurfaceHolder holder) {
recorder = new MediaRecorder();
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
}
public void surfaceChanged(SurfaceHolder holder, int format, int
width, int height) {
recorder.setOutputFile(createPath());
recorder.setVideoFrameRate(15);
recorder.setVideoSize(width, height);
recorder.setPreviewDisplay(holder.getSurface());
try{
//プレビュー開始
recorder.prepare();
}catch(Exception e){
android.util.Log.e("Error", e.getMessage());
}
}
public void surfaceDestroyed(SurfaceHolder holder) {
}
@Override
public boolean onTouchEvent(MotionEvent event){
if(event.getAction() == MotionEvent.ACTION_DOWN){
if(!isRecord){
isRecord = true;
//撮影開始
recorder.start();
}else{
recorder.stop();
recorder.release();
}
}
return true;
}
private String createPath(){
File dir = Environment.getExternalStorageDirectory();
File appDir = new File(dir, "VideoTest");
if(!appDir.exists()){
appDir.mkdir();
}
String name = System.currentTimeMillis() + ".3gp";
return new File(appDir, name).getAbsolutePath();
}
}
-----------------------------------------
よろしくお願いします。