Android:如何在没有有效视频预览表面的情况下初始化 MediaRecorder?

标签 android video-capture mediarecorder

我正在构建一个相机应用程序,可以连续捕获视频并将其保存到 SD 卡中。视频很短(几分钟),它们的长度是用 setMaxDuration() 预设的。

整个过程运行良好,而主要 Activity 在前台。但是,当我进行另一项 Activity (例如设置)时,视频录制仅在达到最大持续时间之前在后台工作。文件已保存,但无法启动新序列 因为 prepare() 失败,显然是因为 setPreviewDisplay() 不喜欢没有合适的表面来附着。

我尝试使用一个虚拟 Surface、一个虚拟 SurfaceHolder、lockCanvas() 和其他各种技巧,但没有任何效果。有没有办法在没有有效表面的情况下初始化 MediaRecorder?

最佳答案

遗憾的是,您仍然需要在有效表面上进行预览才能录制视频(Android SDK 1.6 至 2.2)。已记录增强请求以删除此限制 http://code.google.com/p/android/issues/detail?id=9570

关于Android:如何在没有有效视频预览表面的情况下初始化 MediaRecorder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1252172/

相关文章:

android - 如何管理从调用 Play2!-Scala REST 服务的 native 移动应用程序发送的用户请求的身份验证/授权

android - 在 onLongClickListener 中调用 MediaRecorder.start 时在 android.media.MediaRecorder.start 处出现 java.lang.IllegalStateException

android:在模拟器上使用 MediaPlayer 录制音频

android - 为特定国家发布 Android 应用

android - 在构建 Android 源代码时如何包含需要系统签名的 APK?

ruby-on-rails-3 - 在网页上使用网络摄像头录制视频

python - VideoCapture 似乎不适用于 Debian - opencv 3.2

c++ - 如何将Windows 10系统上的摄像机的视频帧放入C++应用程序?

android - 如何将视频从android发送到服务器,当转到分配给它的URL时能够在浏览器中播放?

android - 将 Android 应用程序从 Lite 升级到 Pro 版本时保持相同的 SQLite 数据库