- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
根据Camera.Parameters#getPreferredSizeForVideoPreview文档:
we recommend to choose a preview size that has the same aspect ratio as the resolution of video to be recorded
我发现,在某些设备 (Galaxy S3) 上,选择具有不同纵横比的视频录制尺寸确实会导致录制视频时出现问题 (green/purple videos)。
当我遵循文档的建议并坚持相同的宽高比时,它大部分都有效,但在某些设备(Nexus S/Android 4.0.4)上,调用 MediaRecorder.start()
失败带有消息:
E/MediaRecorder﹕ start failed: -19
在其他设备 (HTCEVOV4G/Android 4.0.3) 上调用 MediaRecorder.stop
失败并显示消息:
E/MediaRecorder﹕ stop failed: -1007
不过,我确实发现,如果我调用 MediaRecorder#setVideoSize
时使用与相机预览尺寸完全相同的尺寸,视频录制就可以了。
最佳答案
出现此问题的设备似乎有一个共同点。调用 Camera.Parameters#getSupportedVideoSizes()
全部返回 null!根据documentation for getSupportedVideoSizes
,该函数将返回:
Returns
a list of Size object if camera has separate preview and video output; otherwise, null is returned.
这意味着,对于这些设备,相机的预览和视频输出是相同的,因此无论宽高比如何,设置不同的尺寸都会导致问题。
这可以通过对相机预览大小 (Camera.Parameters#setPreviewSize) 和视频录制大小 (MediaRecorder#setVideoSize) 使用相同的尺寸来解决。
但是,需要注意的是,并非所有使用相同预览和视频输出的设备都会遇到此问题。例如,HTC One Mini (Android 4.4.2) 会动态更改其预览分辨率以匹配视频录制分辨率。虽然未得到证实,但我的测试让我相信这是使用 SurfaceView
作为记录表面而不是使用 TextureView
时的问题。 4.1 之前,似乎接受了 recording with a TextureView
was not supported , 所以 ICS 及以下你需要确保你的预览和视频大小匹配,但在 JB+ 中,这似乎无关紧要。这可能在很大程度上取决于设备,我还没有证实这个理论。
啊,是的,android 的狂野世界!
关于android - 即使匹配视频大小和预览大小纵横比,MediaRecorder 也会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25536058/
我有一张 table 。我希望它的数据垂直和水平居中。 我使用了 align="center"valign="middle" ,但它没有用。
我是一名优秀的程序员,十分优秀!