Android视频录制、播放的两种方式

本文介绍了Android中视频录制和播放的两种方法:通过Intent和使用MediaRecorder。使用Intent方式时,通过设置MediaStore.EXTRA_OUTPUT、EXTRA_VIDEO_QUALITY等参数来控制录制,并通过VideoView播放。使用MediaRecorder时,需要设置音频和视频源、输出格式、编码器等,实现更自定义的录制。文章提供了详细的代码示例和注意事项。
摘要由CSDN通过智能技术生成

Android视频录制、播放的两种方式

1、通过Intent的方式:Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);

2、使用CameraAPI,调用MediaMediaRecorder

Intent的方式

注意:这里播放camera录制的视频使用VideoView,不使用MediaPlayerSurfaceView的结合。用帧布局Framelayout布局,VideoViewImageView,播放时隐藏视频缩略图,暂停时或初始化时显示视频缩略图。

因为VideoView没有设置监听播放和暂停状态的事件,所以我自定义一个CustomVideoView继承了VideoView,在里面创建一个监听方法和重写VideoView的播放、暂停的方法。

使用相机intent获取视频是使用最少代码使得你的应用获取视频的捷径.一个视频获取intent可以包含以下额外信息:

 

MediaStore.EXTRA_OUTPUT-此设置需要一个保存视频的路径和文件名的Uri.此设置是可选的但是强列推荐的.如果你不指定此值,相机应用就把请求到的图像以默认的文件名保存到默认的文件夹下,这些信息保存在返回的intentIntent.getData()字段中.

MediaStore.EXTRA_VIDEO_QUALITY- 此值在最低质量最小文件尺寸时是0,在最高质量最大文件尺寸时是1.

MediaStore.EXTRA_DURATION_LIMIT- 此值设置获取视频的长度,以秒为单位.

MediaStore.EXTRA_SIZE_LIMIT- 此值设置获取视频文件的大小,以字节为单位.

XML布局视图:


public class MainActivity extends AppCompatActivity {
    private static int REQUST_VIDEO = 1;
    private Button btn;
    private Button btn_start;
    private FrameLayout fl;
    private CustomVideoView video;
    private ImageView iv;
    private String sdCard;
    private String videoPath;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
    }
    private void init(){
        btn = ((Button) findViewById(R.id.btn_recoder));
        btn_start = ((Button) findViewById(R.id.btn_start));
        fl = ((FrameLayout) findViewById(R.id.fl_video));
        video = ((CustomVideoView) findViewById(R.id.video));
        iv = ((ImageView) findViewById(R.id.iv));
        sdCard = Environment.getExternalStorageDirectory().getPath();
        String currenTimeMillis = new SimpleDateFormat("yyyyMMdd HH:mm:ss").format(new Date(System.currentTimeMillis()));
        videoPath = sdCard + "/" +  "0000.mp4";
        MediaController controller = new MediaController(this);
        video.setMediaController(controller);
        if (video.isPlaying()){
            iv.setVisibility(View.INVISIBLE);
        }
        video.setPlayPauseListener(new CustomVideoView.PlayPauseListener() {
            @Override
            public void onPlay() {
                Toast.makeText(MainActivity.this,"播放",Toast.LEN

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值