• Android视录视频示例


    这几天需要搞一个Android视频通话功能,从最简单的视频录制开始,网上例子大多不完整。下面的示例参考过别人的代码,还是拿出来给需要的朋友分享下。

    Activity类:VideoActivity

    1. package com.media.Media;    
    2.     
    3. import java.io.File;    
    4. import java.io.IOException;    
    5.     
    6. import android.app.Activity;    
    7. import android.media.MediaRecorder;    
    8. import android.os.Bundle;    
    9. import android.os.Environment;    
    10. import android.view.SurfaceHolder;    
    11. import android.view.SurfaceView;    
    12. import android.view.View;    
    13. import android.view.View.OnClickListener;    
    14. import android.widget.Button;    
    15.     
    16. public class VideoActivity extends Activity {    
    17.     
    18.         
    19.     private File myRecAudioFile;    
    20.     private SurfaceView mSurfaceView;       
    21.     private SurfaceHolder mSurfaceHolder;     
    22.     private Button buttonStart;    
    23.     private Button buttonStop;    
    24.     private File dir;    
    25.     private MediaRecorder recorder;    
    26.         
    27.         
    28.     @Override    
    29.     public void onCreate(Bundle savedInstanceState) {    
    30.         super.onCreate(savedInstanceState);    
    31.         setContentView(R.layout.video);    
    32.         mSurfaceView = (SurfaceView) findViewById(R.id.videoView);       
    33.         mSurfaceHolder = mSurfaceView.getHolder();       
    34.         mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);     
    35.         buttonStart=(Button)findViewById(R.id.start);    
    36.         buttonStop=(Button)findViewById(R.id.stop);    
    37.         File defaultDir = Environment.getExternalStorageDirectory();    
    38.         String path = defaultDir.getAbsolutePath()+File.separator+"V"+File.separator;//创建文件夹存放视频    
    39.         dir = new File(path);    
    40.         if(!dir.exists()){    
    41.             dir.mkdir();    
    42.         }    
    43.         recorder = new MediaRecorder();    
    44.             
    45.         buttonStart.setOnClickListener(new OnClickListener() {    
    46.             @Override    
    47.             public void onClick(View v) {    
    48.                 recorder();    
    49.             }    
    50.         });    
    51.             
    52.         buttonStop.setOnClickListener(new OnClickListener() {    
    53.             @Override    
    54.             public void onClick(View v) {    
    55.                  recorder.stop();    
    56.                  recorder.reset();    
    57.                  recorder.release();    
    58.                  recorder=null;    
    59.             }    
    60.         });    
    61.     }    
    62.         
    63.         
    64.         
    65.     public void recorder() {    
    66.         try {    
    67.             myRecAudioFile = File.createTempFile("video", ".3gp",dir);//创建临时文件    
    68.             recorder.setPreviewDisplay(mSurfaceHolder.getSurface());//预览    
    69.             recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);//视频源    
    70.             recorder.setAudioSource(MediaRecorder.AudioSource.MIC); //录音源为麦克风    
    71.             recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//输出格式为3gp    
    72.             recorder.setVideoSize(800, 480);//视频尺寸    
    73.             recorder.setVideoFrameRate(15);//视频帧频率    
    74.             recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);//视频编码    
    75.             recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//音频编码    
    76.             recorder.setMaxDuration(10000);//最大期限    
    77.             recorder.setOutputFile(myRecAudioFile.getAbsolutePath());//保存路径    
    78.             recorder.prepare();    
    79.             recorder.start();    
    80.         } catch (IOException e) {    
    81.             e.printStackTrace();    
    82.         }    
    83.     }    
    84. }    

    界面:video.xml

    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.         
    13.     <RelativeLayout    
    14.         android:layout_width="fill_parent"    
    15.         android:layout_height="wrap_content">      
    16.         <Button    
    17.           android:layout_width="wrap_content"    
    18.           android:layout_height="wrap_content"    
    19.           android:text="录制"    
    20.           android:id="@+id/start"/>      
    21.         <Button    
    22.           android:layout_width="wrap_content"    
    23.           android:layout_height="wrap_content"    
    24.           android:layout_toRightOf="@id/start"    
    25.           android:text="停止"    
    26.           android:id="@+id/stop"/>      
    27.     </RelativeLayout>    
    28. </LinearLayout>   

    权限配置:AndroidManifest.xml

    1. <?xml version="1.0" encoding="utf-8"?>    
    2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"    
    3.       package="com.media.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.         
    16.     <uses-sdk android:minSdkVersion="7" />    
    17.     <uses-permission android:name="android.permission.CAMERA"/>    
    18.     <uses-permission android:name="android.permission.RECORD_AUDIO"/>    
    19.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>    
    20. </manifest>     

    希望对需要的人有帮助。

    http://www.xker.com/page/e2011/0320/100584.html

  • 相关阅读:
    Asp.Net MVC 路由
    EntityFramework执行SQL语句
    partial类与[MetadataType(typeof(类名))]有什么区别?
    Asp.net mvc + .net ef database first 或 model first 时如何添加验证特性
    Entity Framework 学习总结之一:ADO.NET 实体框架概述
    C#中dynamic的正确用法
    Func与Action
    SVN的使用和问题解决方法总结
    微信小程序---绘图
    微信小程序---动画
  • 原文地址:https://www.cnblogs.com/cmblogs/p/4419722.html
Copyright © 2020-2023  润新知