南京网站建设公司 雷仁网络,二次元wordpress主题,中国建设机械教育协会网站,乌市建设工程质量监督站网站关于android的实时视频录制现在网上炒的很火#xff0c;我想把自己学习研究的一个视频录制的demo 的心得与大家分享一下使用的是MediaRecorder 以及使用SurfaceView进行录制的。视频录制的部分也比较简单#xff0c;直接看API的图就可以很清楚的知道步骤了。Android的MediaRe…关于android的实时视频录制现在网上炒的很火我想把自己学习研究的一个视频录制的demo 的心得与大家分享一下使用的是MediaRecorder 以及使用SurfaceView进行录制的。视频录制的部分也比较简单直接看API的图就可以很清楚的知道步骤了。Android的MediaRecorder包含了Audio和video的记录功能在Android的界面上Music和Video两个应用程序都是调用MediaRecorder实现的。通过操作这个MediaRecorder类就能实现这个音频和视频的录制。通过几个星期的努力做了一个基本成型的东西。可以录制视频并且可是实时的上传到服务器端。但是没有解决实时的问题正在研究当中。但是在实时的上传的时候会遇到很多问题。1.就是在保存本地的路径换成Socket android 的IPA可以支持可以用Socket 来传输ParcelFileDescriptor pfd ParcelFileDescriptor.fromSocket(receiver);mediaRecorder.setOutputFile(pfd.getFileDescriptor());只要把参数换成Socket 就可以。但是有个问题可是实时的传到服务器上。有数据但是就是不能播放。具体查了好多资料知道什么原因但是没有具体的解决方法目前正在研究方法中。1.具体不能播放的原因就是在视频的录制的时候都有个数据回写功能。数据回写就是把视频一些标题数据信息加载到录制的文件的开头要是在录制视频没有这个标题头的话就不能播放视频在本地录制的可以播放但是用Socket 传输的话就是把那个信息数据加到文件的后面。导致文件开头没有信息无法播放所以现在正在研究解决方法。具体实时的上传的代码如下可以参考。/*** 实时上传到PC端(边录边传)** author Administrator 吕俊*/private final class ButtonClickListener1 implements View.OnClickListener{Overridepublic void onClick(View v){if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){Toast.makeText(MainActivity.this, R.string.sdcarderror, 1).show();return;}try{switch (v.getId()){case R.id.record:mediaRecorder.reset();mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); // 从照相机采集视频//mediaRecorder//.setAudioSource(MediaRecorder.AudioSource.MIC);mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);mediaRecorder.setVideoSize(480, 320);mediaRecorder.setVideoFrameRate(3); // 每秒3帧mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT); // 设置视频编码方式//mediaRecorder// .setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);mediaRecorder.setPreviewDisplay(surfaceView.getHolder().getSurface());// 实时上传的代码receiver new Socket(192.168.1.149, 9999);ParcelFileDescriptor pfd ParcelFileDescriptor.fromSocket(receiver);mediaRecorder.setOutputFile(pfd.getFileDescriptor());mediaRecorder.prepare();// 预期准备mediaRecorder.start();// 开始刻录record true;break;case R.id.stop:if (record){System.out.println(videoFile);mediaRecorder.stop();mediaRecorder.release();receiver.close();record false;}break;}} catch (Exception e){Toast.makeText(MainActivity.this, R.string.error, 1).show();Log.e(TAG, e.toString());}}}