android 音視頻錄製

來源:互聯網
上載者:User
<!--音頻錄製許可權-->      <uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>   <!--視頻錄製許可權-->        <uses-permission android:name="android.permission.CAMERA"/>                 <uses-permission android:name="android.permission.RECORD_AUDIO"/>                 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>    

視頻錄製

<pre name="code" class="java">package cn.media;      import java.io.File;   import java.io.IOException;      import android.app.Activity;   import android.media.MediaRecorder;   import android.os.Bundle;   import android.os.Environment;   import android.view.SurfaceHolder;   import android.view.SurfaceView;   import android.view.View;   import android.view.View.OnClickListener;   import android.widget.Button;      //視頻錄製:</pre><pre name="code" class="java">public class MediaConnection extends Activity {       private File myRecAudioFile;       private SurfaceView mSurfaceView;       private SurfaceHolder mSurfaceHolder;       private Button buttonStart;       private Button buttonStop;       private File dir;       private MediaRecorder recorder;          @Override       public void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           setContentView(R.layout.video);           mSurfaceView = (SurfaceView) findViewById(R.id.videoView);           mSurfaceHolder = mSurfaceView.getHolder();              mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);           buttonStart = (Button) findViewById(R.id.start);           buttonStop = (Button) findViewById(R.id.stop);           File defaultDir = Environment.getExternalStorageDirectory();           String path = defaultDir.getAbsolutePath() + File.separator + "V"                   + File.separator;           // 建立檔案夾存放視頻           dir = new File(path);           if (!dir.exists()) {               dir.mkdir();           }           recorder = new MediaRecorder();           buttonStart.setOnClickListener(new OnClickListener() {               @Override               public void onClick(View v) {                   recorder();               }           });              buttonStop.setOnClickListener(new OnClickListener() {               @Override               public void onClick(View v) {                   recorder.stop();                   recorder.reset();                   recorder.release();                   recorder = null;               }           });       }          public void recorder() {           try {               myRecAudioFile = File.createTempFile("video", ".3gp", dir);// 建立臨時檔案               recorder.setPreviewDisplay(mSurfaceHolder.getSurface());// 預覽                  recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);// 視頻源               recorder.setAudioSource(MediaRecorder.AudioSource.MIC);               // 錄音源為麥克風                  recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);               // 輸出格式為3gp               recorder.setVideoSize(800, 480);// 視頻尺寸               recorder.setVideoFrameRate(15);// 視訊框架頻率               recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);// 視頻編碼               recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);               // 音頻編碼               recorder.setMaxDuration(10000);// 最大期限               recorder.setOutputFile(myRecAudioFile.getAbsolutePath());               // 儲存路徑               recorder.prepare();               recorder.start();           } catch (IOException e) {               e.printStackTrace();           }       }   }   </pre>    

音頻錄製:

package cn.media;      import java.io.File;   import java.io.IOException;      import android.app.Activity;   import android.content.ContentResolver;   import android.content.ContentValues;   import android.content.Intent;   import android.media.MediaRecorder;   import android.net.Uri;   import android.os.Environment;   import android.provider.MediaStore;   import android.util.Log;   /**   * 音頻錄製   * @author Administrator   *   */   public class MyMediaRecoder extends Activity {          MediaRecorder mrec;       File audiofile=null;       private static final String TAG="SoundRecordingDemo";       protected void startRecording() throws IOException       {   //      設定音頻源           mrec.setAudioSource(MediaRecorder.AudioSource.MIC);   //      設定檔案輸出格式           mrec.setOutputFormat(MediaRecorder.AudioEncoder.AMR_NB);           if(audiofile==null){               File sampleDir=Environment.getExternalStorageDirectory();               try{                   audiofile=File.createTempFile("ibm", ".3gp",sampleDir);               }               catch(IOException e){                   Log.e(TAG,"sdcard access error");                   return;               }           }   //      檔案輸出路徑           mrec.setOutputFile(audiofile.getAbsolutePath());                      mrec.prepare();           mrec.start();       }       protected void stopRecording(){           mrec.stop();           mrec.release();           processAudiofile(audiofile);       }       protected void processAudiofile(File audiofile){           ContentValues values=new ContentValues(3);           long current=System.currentTimeMillis();           values.put(MediaStore.Audio.Media.TITLE,"audio"+audiofile.getName());           values.put(MediaStore.Audio.Media.TITLE, "audio" + audiofile.getName());            values.put(MediaStore.Audio.Media.DATE_ADDED, (int) (current / 1000));            values.put(MediaStore.Audio.Media.MIME_TYPE, "audio/3gpp");            values.put(MediaStore.Audio.Media.DATA, audiofile.getAbsolutePath());            ContentResolver contentResolver=getContentResolver();           Uri base=MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;           Uri newUri=contentResolver.insert(base,values);           sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,newUri));       }   }   

調用系統錄音機:

Intent intent=new Intent(android.content.Intent.ACTION_VIEW);         File sdcardPath=Environment.getExternalStorageDirectory();         Uri audioFileUri=Uri.fromFile(sdcardPath);         intent.setDataAndType(audioFileUri,"audio/mp3");         startActivity(intent);  

許可權:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.