Camera2Video Api全屏预览和视频质量

时间:2016-05-31 07:35:53

标签: android camera android-camera android-camera2

我正在构建一个关于camera2video API的应用。想要全屏显示预览,但它占据了屏幕的70%区域,如Camera2video API Github所示https://github.com/googlesamples/android-Camera2Video 此外,视频质量参数没有选项,因为它已在不推荐使用的Camera API中提供。

3 个答案:

答案 0 :(得分:1)

Camera2Video演示包含一个名为AutoFitTextureView的类,它适合纹理视图中的预览,同时保留纵横比。如果您想要拉伸预览以填充整个屏幕,只需使用常规TextureView而不是此类。

您需要替换AutoFitTextureView类中Camera2VideoFragment的引用,以及纵向和横向的布局XML文件中的引用。将layout_widthlayout_height更改为match_parent

  

并且视频质量参数没有选项,因为它已在不推荐使用的Camera API中提供

mMediaRecorder的{​​{3}}对象(Camera2VideoFragment)上进行设置。

答案 1 :(得分:1)

int width = MeasureSpec.getSize(widthMeasureSpec);
    int height = MeasureSpec.getSize(heightMeasureSpec);
    if (0 == mRatioWidth || 0 == mRatioHeight) {
        setMeasuredDimension(width, height);
    } else {
        if (width < height * mRatioWidth / mRatioHeight) {
            setMeasuredDimension(height * mRatioWidth / mRatioHeight, height);
        } else {
            setMeasuredDimension(width, width * mRatioHeight / mRatioWidth);
        }
    }

在onMeasure方法的AutoFitTextureview类中更改此内容

答案 2 :(得分:0)

camera2实现不太好。在您的情况下,您会找到 chooseVideoSize 方法,并按以下方式进行更改:

private Size chooseVideoSize(Size[] choices) {

        for (Size size : choices) {
            if (size.getWidth() == size.getHeight() * 16 / 9 && size.getWidth() <= 1080) {
                return size;
            }
        }
        Log.e(TAG, "Couldn't find any suitable video size");
        return choices[choices.length - 1];
    }

接下来,您应该将 android:layout_alignParentEnd =&#34; true&#34; 插入默认布局文件夹的fragment_camera2_video.xml。它看起来像:

<com.example.android.camera2video.AutoFitTextureView
        android:id="@+id/texture"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentEnd="true" //add here
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true" />