MediaRecoder分别获取音频、视频保存本地

package com.example.getaac264ts;

import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;


import android.hardware.Camera;
import android.hardware.Camera.CameraInfo;
import android.hardware.Camera.Parameters;
import android.media.MediaRecorder;
import android.net.LocalServerSocket;
import android.net.LocalSocket;
import android.net.LocalSocketAddress;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements Callback, Runnable{

	private static final String TAG = "H264_AAC";
	private Camera mCamera;
	Button sendButton;
	Button receivedButton;
	//初始化MediaRecorder
		private MediaRecorder mMediaRecorder = null;
		//private int videoWidth = 1280;
		//private int videoHeight = 720;
		private int videoWidth = 640;
		private int videoHeight = 480;
		private int videoRate = 25;	
		private String fd = "/sdcard/MediaRecorder/videotest.3gp";
		 private SurfaceView mSurfaceView;
		 private SurfaceHolder mSurfaceHolder;
		    private boolean mMediaRecorderRecording = false;
		    LocalServerSocket lss;
			LocalSocket receiver, sender;
			private final int MAXFRAMEBUFFER = 20480;//20K
			private byte[] h264frame = new byte[MAXFRAMEBUFFER];
			private final byte[] head = new byte[]{0x00,0x00,0x00,0x01};
			private RandomAccessFile file_test;
			private byte[] SPS;
			private byte[] PPS;
			private int StartMdatPlace = 0;

	
	
	public MediaRecorder mediarecorder;
	public LocalSocket senderaac;
	public LocalSocket receivedaac;
	public LocalServerSocket lssaac;
	public static final int BUFFER_SIZE=5000;
	public InputStream inputStream;
	public Recoder recoder;
	byte[] buffer;
	public BufferedOutputStream bufferedoutstream;
	public RandomAccessFile raf;
	public boolean ISrunning;
	public Thread getAudio;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
   
        sendButton=(Button)findViewById(R.id.start);
		receivedButton=(Button)findViewById(R.id.stop);
        InitSurfaceView();
        InitMediaSharePreference();
        
        
        sendButton.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Log.e("fdsa", "start button.....");
				ISrunning=true;
				recoder=new Recoder();
				recoder.start();
				Log.e("fdsfd", "before the MediaRorder Init");
				MediaRecoderInit();	
				Log.e("fdsfd", "after the MediaRorder Init");
				getAudio=new GetAudio();
				getAudio.start();
			}
		});
		
        
		receivedButton.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Log.e("fdsa", "stop the recording...");
				ISrunning=false;
				if (recoder!=null) {
					recoder.interrupt();
				}
				if(mediarecorder!=null){
					mediarecorder.stop();
					mediarecorder.release();
					mediarecorder=null;
				}
				if (inputStream!=null) {
					try {
						inputStream.close();
					}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值