我正在构建一个相机应用程序,可以连续捕获视频并将其保存到SD卡中。视频很短(几分钟),它们的长度是用setMaxDuration()预设的。整个过程运行良好,而主要Activity在前台。但是,当我进行另一项Activity(例如设置)时,视频录制仅在达到最大持续时间之前在后台工作。文件已保存,但无法启动新序列因为prepare()失败,显然是因为setPreviewDisplay()不喜欢没有合适的表面来附着。我尝试使用一个虚拟Surface、一个虚拟SurfaceHolder、lockCanvas()和其他各种技巧,但没有任何效果。有没有办法在没有有效表面的情况下初始化MediaR
我在尝试修复一个简单的视频录制应用时遇到了一些问题*。我想我正确地遵循了步骤顺序。以下是给我带来问题的代码部分的简化。一旦按下按钮,此代码仅作为回调执行:if(mRecorder!=null){mRecorder.reset();mRecorder.release();}mRecorder=newMediaRecorder();if(mViewer.hasSurface){mRecorder.setPreviewDisplay(mViewer.holder.getSurface());Log.d(TAG,"Surfacehasbeenset");}try{Log.d(TAG,"Slee
我正在尝试录制音频,但MediaRecorder类的start()方法抛出IllegalStateException。我使用以下代码:MediaRecorderrecorder=newMediaRecorder();recorder.setAudioSource(MediaRecorder.AudioSource.MIC);recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);recorder.s
这是我的问题:)。如果我使用带有MediaRecorder的前置摄像头开始录制,然后切换到后置摄像头,是否可以使用相同的视频文件继续录制?另外,是否可以同时录制两个摄像头? 最佳答案 您可以在Nexus9上使用camera2api执行此操作。(Nexus5不能同时开启2个摄像头)创建2个Gl上下文(共享)和2个纹理缓冲区。创建用于预览的TextureView。创建用于录制的MediaRecoder。打开前后摄像头。重复请求输出目标是纹理缓冲区。为每一帧将具有2个纹理的场景渲染到TextureView的表面。为每一帧将具有2个纹理的场
我需要在android中使用AudioRecorder的简单音频录制和播放示例。我尝试使用MediaRecorder,效果很好。 最佳答案 你是说AudioRecord?搜索例如“AudioRecord.OnRecordPositionUpdateListener”使用谷歌代码搜索。顺便说一句,AudioRecord进行录音,而不是播放。另见:ImproveAndroidAudioRecordingquality?AndroidAudioRecordclass-processlivemicaudioquickly,setupcall
androidMediaRecorder可以采集分辨率高于320*240的视频吗?当我使用MediaRecorder::setVideoSize()设置视频大小时,截取的视频都是320*240的分辨率。更糟糕的是,更高的无法获得清晰的视频,它们有点发绿。(编码器为h263,格式为mpeg4)这里使用的安卓版本是1.6你能请任何人帮助我吗? 最佳答案 我遇到了与此处描述的问题类似的问题。我发现在调整视频大小之前我必须稍微重组我的代码。重要的是setVideoSize()在setVideoEncoder()之前被调用。我在文档中找不到这
我的Android应用程序在SurfaceHolder上使用MediaRecorder来显示相机正在捕获的内容的实时预览。每次用户按下应用程序上的REC按钮时,应用程序就会开始录制。每次MediaRecorder的状态切换到“开始”或从“开始”切换时,Android都会自动(?)发出哔声。这种蜂鸣声因手机而异,这让我认为这种蜂鸣声本身与MediaRecorder的状态变化有关。如果手机音量设置为静音,则不会播放提示音。我用谷歌搜索并做了一些研究,但找不到关闭此提示音的方法。可能吗?如果是,怎么办?该应用已在以下平台上测试:NexusOne2.3.4、DesireHD2.3.3
有没有办法询问Android设备它支持哪些音频和视频编解码器进行编码?我发现设备不支持某些列为强制性编解码器的设备http://developer.android.com/guide/appendix/media-formats.html并且似乎有些设备支持此处未列出的其他编解码器。 最佳答案 这对你来说可能很有趣:privatestaticMediaCodecInfoselectCodec(StringmimeType){intnumCodecs=MediaCodecList.getCodecCount();for(inti=0;
安卓MediaRecorder允许将视频保存到文件(文件或套接字):setOutputFile(FileDescriptorfd);setOutputFile(Stringpath)如何将视频数据保存到OutputStream?它将用于流式视频录制。 最佳答案 您可以使用ParcelFileDescriptor.fromSocket()来完成:Stringhostname="example.com";intport=1234;Socketsocket=newSocket(InetAddress.getByName(hostname)
我一直在一些Android4.0设备上使用TextureView。例如,我尝试开发一个简单的应用程序,它可以录制视频并使用TextureView进行预览。但是,据我阅读AndroidAPI文档,标准MediaRecorder需要一定的表面才能执行视频录制,但另一方面,TextureView不再有自己的表面,因此TextureView和MediaRecorder之间似乎存在不兼容。MediaRecorder.setPreviewDisplayTextureView有谁知道如何使用标准的MediaRecorder将TextureView作为其相机预览来录制视频?或者除了MediaRecor