gpt4 book ai didi

Android,MediaStore.ACTION_VIDEO_CAPTURE 使用了哪个摄像头? (正面或背面)

转载 作者:行者123 更新时间:2023-11-29 17:46:22 35 4
gpt4 key购买 nike

简单的工作代码:

m_TakeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
if (m_TakeVideoIntent.resolveActivity(MainActivity.this.getPackageManager()) != null) {
startActivityForResult(m_TakeVideoIntent, REQUEST_VIDEO_CAPTURE);
}

// and when done:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == REQUEST_VIDEO_CAPTURE) {
// code
} else {
// other code
}
}
}

问题:

我如何在 onActivityResult(..) 中知道使用了哪个摄像头,前置还是后置?

如何强制新 Intent(MediaStore.ACTION_VIDEO_CAPTURE) 使用前置或后置摄像头?

(这是因为使用前置摄像头时 - 结果视频倒置播放。)

最佳答案

这有点长,但提供了有关当视频以错误的方向播放时实际出了什么问题的有用信息。喝杯好酒,继续阅读……

原始问题

How can I force the new Intent(MediaStore.ACTION_VIDEO_CAPTURE) to use the front or back camera?

如其他地方所述,有一种(不可靠的)方法可以要求相机或视频 Activity 以前置摄像头或后置摄像头模式打开。

这种方法除了不靠谱外,也没有任何东西可以阻止用户在相机打开后切换前后模式,所以它永远不会很好地解决倒置视频播放问题。

How can I know in onActivityResult(..) what camera was used, front or back?

我不知道有什么办法。但是……

无论如何,前后摄像头并不是真正的问题。

根本问题是,对于某些媒体播放器,Android 设备捕获的视频可能会以错误的方向播放。这是因为,根据 MediaRecorder文档,设置方向提示

... will not trigger the source video frame to rotate during video recording, but to add a composition matrix containing the rotation angle in the output video...

不幸的是:

Some video players may choose to ignore the compostion matrix in a video during playback.

阅读视频方向

虽然一些媒体播放器会忽略方向提示,但您自己的代码可以读取它。

public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK && requestCode == REQUEST_VIDEO_CAPTURE) {
Uri vid = data.getData();

Log.i("xcode", "Video captured: " + data.getData());

MediaMetadataRetriever mmr = new MediaMetadataRetriever();
mmr.setDataSource(this, vid);
String foo = mmr
.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_ROTATION);

Log.i("xcode", "Video captured: " + data.getData() + " rotation: "
+ foo);
}
}

(请注意,为了从返回的视频中读取元数据,您需要在请求时提供 MediaStore.EXTRA_OUTPUT 字段,正如 Camera docs 所建议的那样。)

当我运行这段代码时,我得到以下结果:

  • 后置摄像头,纵向,旋转 == 90
  • 前置摄像头,纵向,旋转 == 270
  • 后置摄像头,横向,旋转 == 180
  • 前置摄像头,横向,旋转 == 180

当旋转为 270 度时,这些视频捕捉似乎对某些玩家来说可能会出现问题,因此您应该选择这些视频以通过后期处理进行修复。

关于Android,MediaStore.ACTION_VIDEO_CAPTURE 使用了哪个摄像头? (正面或背面),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26322243/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com