我利用service进行后台录像,有视频文件生成,但是是无法播放的视频文件,不知道是程序里哪里有错,望各位高手指点一二,再次谢过啦~~~ public class recorder extends Service{ public static final int MEDIA_TYPE_IMAGE = 1; public static final int MEDIA_TYPE_VIDEO = 2; private Camera mCamera01; private MediaRecorder mRecorder01; @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return null; } @Override public void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); stop_camera(); mCamera01.stopPreview(); mCamera01.release(); mCamera01 = null; Toast.makeText(this,"STOP",Toast.LENGTH_SHORT).show(); } @Override public void onStart(Intent intent, int startId) { // TODO Auto-generated method stub super.onStart(intent, startId); init_camera(); } private void init_camera() { Toast.makeText(this,"start",Toast.LENGTH_SHORT).show(); // mCamera01 = Camera.open(); if(null == mCamera01) mCamera01 = Camera.open(); mCamera01.stopPreview(); mCamera01.unlock(); mRecorder01 = new MediaRecorder();// 创建mRecorder对象 mRecorder01.setCamera(mCamera01);// 设置录制视频源为Camera(相机) mRecorder01.setVideoSource(MediaRecorder.VideoSource.CAMERA); mRecorder01.setAudioSource(MediaRecorder.AudioSource.CAMCORDER); mRecorder01.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); // mRecorder01.setPreviewDisplay(mSurfaceHolder01.getSurface()); mRecorder01.setOutputFile(getOutputMediaFile(MEDIA_TYPE_VIDEO).toString()); try { // 准备录制 mRecorder01.prepare(); // 开始录制 mRecorder01.start(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private void stop_camera(){ if (mRecorder01 != null){ mRecorder01.stop(); mRecorder01.reset(); mRecorder01.release(); mRecorder01 = null; mCamera01.lock(); } } private static File getOutputMediaFile(int type){ File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DCIM), "Camera"); if (! mediaStorageDir.exists()){ if (! mediaStorageDir.mkdirs()){ Log.d("mypictures", "failed to create directory"); return null; } } // Create a media file name String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); File mediaFile; if (type == MEDIA_TYPE_IMAGE){ mediaFile = new File(mediaStorageDir.getPath() + File.separator + "IMG_"+ timeStamp + ".jpg"); } else if(type == MEDIA_TYPE_VIDEO) { mediaFile = new File(mediaStorageDir.getPath() + File.separator + "VID_"+ timeStamp + ".mp4"); } else { return null; } return mediaFile; } } |
|
顶啊 来人啊~~~~~~~~~~
|
|
4分 |
应用层的程序 不可能进行后台录像
|
多谢了。 |
|
1分 |
共同学习一下!
|
来更多的人 提更多的意见吧。
我的程序可 已经可以出现东东了,就是保存下来的文件 不能播放,不知道是不是哪里设置的问题。我在网络上查了下,好像有人可以实现后台秘密录像的。望有高人指点一二啊~~ |
|
15分 |
这是android的保护机制你调用camera时必须有一个surface view传下去用来预览的(后台就没有预览了),如果想实现必须提升APK权限,system/root都可以 如果可以在后台录像,那就方便了病毒程序,可以随时使用你的camera |
15分 |
你试下改成前台录像会不会有问题
或者你看下你设置的格式会不会有问题 |
5分 |
我利用service进行后台录像,有视频文件生成,但是是无法播放的视频文件,不知道是程序里哪里有错
你确定 你的视频文件生成了? 怀疑1 |
我拉到电脑下,视频播放 说是 不标准的视频文件 但是的确有文件生成了额~ |
|
15分 |
以下内容为猜测
mRecorder01.start(); 产生了 那个文件,但是 一般录制结束的时候才会回写信息,由于你没有Camera 其实 已开始录制的时候就报错了,你在你的异常处理的地方都打一下log。通过学习 我也是猜测,后台是无法获取到Camera的,所以说录像估计是不行。至于录音我没有搞过 不知道!~ |
哦 好的 我再测测 哈哈 谢谢 大家啦
|
|
楼主这个问题你解决了吗?求教下啊! |