Android 录制视频

本文提供了一个简单的Android视频录制示例,使用了MediaRecorder进行视频捕捉,并提供了录制和停止按钮来控制录制流程。

http://www.eoeandroid.com/thread-81019-1-1.html 

   一下就是给大家分享的录制视频的例子,当中我会把注释写在代码里,在这里我也就不多说了,因为大家理解的都不怎么太一样,所以请各位看完以后,给我点意见。我也好自身的提高。


       我们还是先来看看主要的代码:

java代码:

  1. package eoe.demo.Media; 

  2. import java.io.File; 
  3. import java.io.IOException; 

  4. import android.app.Activity; 
  5. import android.media.MediaRecorder; 
  6. import android.os.Bundle; 
  7. import android.os.Environment; 
  8. import android.view.SurfaceHolder; 
  9. import android.view.SurfaceView; 
  10. import android.view.View; 
  11. import android.view.View.OnClickListener; 
  12. import android.widget.Button; 

  13. public class VideoActivity extends Activity { 

  14. private File myRecAudioFile; 
  15. private SurfaceView mSurfaceView; 
  16. private SurfaceHolder mSurfaceHolder; 
  17. private Button buttonStart; 
  18. private Button buttonStop; 
  19. private File dir; 
  20. private MediaRecorder recorder; 

  21. @Override 
  22. public void onCreate(Bundle savedInstanceState) { 
  23. super.onCreate(savedInstanceState); 
  24. setContentView(R.layout.video); 
  25. mSurfaceView = (SurfaceView) findViewById(R.id.videoView); 
  26. mSurfaceHolder = mSurfaceView.getHolder(); 
  27. mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
  28. buttonStart=(Button)findViewById(R.id.start); 
  29. buttonStop=(Button)findViewById(R.id.stop); 
  30. File defaultDir = Environment.getExternalStorageDirectory(); 
  31. String path = defaultDir.getAbsolutePath()+File.separator+"V"+File.separator;
  32. //创建文件夹存放视频 
  33. dir = new File(path); 
  34. if(!dir.exists()){ 
  35. dir.mkdir(); 

  36. recorder = new MediaRecorder(); 

  37. buttonStart.setOnClickListener(new OnClickListener() { 
  38. @Override 
  39. public void onClick(View v) { 
  40. recorder(); 

  41. }); 

  42. buttonStop.setOnClickListener(new OnClickListener() { 
  43. @Override 
  44. public void onClick(View v) { 
  45. recorder.stop(); 
  46. recorder.reset(); 
  47. recorder.release(); 
  48. recorder=null; 

  49. }); 




  50. public void recorder() { 
  51. try { 
  52. myRecAudioFile = File.createTempFile("video", ".3gp",dir);//创建临时文件 
  53. recorder.setPreviewDisplay(mSurfaceHolder.getSurface());//预览 
  54. recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);//视频源 
  55. recorder.setAudioSource(MediaRecorder.AudioSource.MIC); //录音源为麦克风 
  56. recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//输出格式为3gp 
  57. recorder.setVideoSize(800, 480);//视频尺寸 
  58. recorder.setVideoFrameRate(15);//视频帧频率 
  59. recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);//视频编码 
  60. recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//音频编码 
  61. recorder.setMaxDuration(10000);//最大期限 
  62. recorder.setOutputFile(myRecAudioFile.getAbsolutePath());//保存路径 
  63. recorder.prepare(); 
  64. recorder.start(); 
  65. } catch (IOException e) { 
  66. e.printStackTrace(); 



复制代码

       我们现在就来看看布局的代码,其实在一个程序当中布局是很关键的,希望大家要多多的有自己的思想在里面,别老是用死板的界面:

java代码:
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout 
  3. xmlns:android="http://schemas.android.com/apk/res/android" 
  4. android:orientation="vertical" 
  5. android:layout_width="fill_parent" 
  6. android:layout_height="fill_parent"> 
  7. <SurfaceView android:id="@+id/videoView" 
  8. android:visibility="visible" 
  9. android:layout_width="320px" 
  10. android:layout_height="240px"> 
  11. </SurfaceView> 

  12. <RelativeLayout 
  13. android:layout_width="fill_parent" 
  14. android:layout_height="wrap_content"> 
  15. <Button 
  16. android:layout_width="wrap_content" 
  17. android:layout_height="wrap_content" 
  18. android:text="录制" 
  19. android:id="@+id/start"/> 
  20. <Button 
  21. android:layout_width="wrap_content" 
  22. android:layout_height="wrap_content" 
  23. android:layout_toRightOf="@id/start" 
  24. android:text="停止" 
  25. android:id="@+id/stop"/> 
  26. </RelativeLayout> 
  27. </LinearLayout> 
复制代码

       最后我们就来看看AndroidManifest.xml代码:

java代码:
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  3. package="eoe.demo.Media" 
  4. android:versionCode="1" 
  5. android:versionName="1.0"> 
  6. <application android:icon="@drawable/rabbit" android:label="@string/app_name"> 
  7. <activity android:name=".VideoActivity" 
  8. android:label="@string/app_name"> 
  9. <intent-filter> 
  10. <action android:name="android.intent.action.MAIN" /> 
  11. <category android:name="android.intent.category.LAUNCHER" /> 
  12. </intent-filter> 
  13. </activity> 
  14. </application> 

  15. <uses-sdk android:minSdkVersion="7" /> 
  16. <uses-permission android:name="android.permission.CAMERA"/> 
  17. <uses-permission android:name="android.permission.RECORD_AUDIO"/> 
  18. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
  19. </manifest> 
复制代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值