我如何才能确保录制的视频的播放正确方向?(How can I ensure correct play

2019-07-31 11:35发布

我使用的是MediaStore.ACTION_VIDEO_CAPTURE意图捕捉视频和以后使用回放VideoView 。 我想知道这是拍摄的视频的方向。

我不想使用方向的意图通话的时间,因为用户可以旋转之前打快门按钮的装置。 我也不想实现自己的自定义视频拍摄。

存储在视频的定向保存的文件和/或意图的结果返回?

Answer 1:

存储在视频的定向保存的文件和/或意图的结果返回?

所述AOSP VideoCamera活性确实提供摄像机装置到的旋转值MediaRecorder.setOrientationHint()方法。 下面是该代码的摘录VideoCamera.initializeRecorder()与此相关的代码:

    // See android.hardware.Camera.Parameters.setRotation for
    // documentation.
    // Note that mOrientation here is the device orientation, which is 
    // the opposite of what getWindowManager().getDefaultDisplay().getRotation() 
    // would return, which is the orientation the graphics need to rotate 
    // in order to render correctly.
    int rotation = 0;
    if (mOrientation != OrientationEventListener.ORIENTATION_UNKNOWN) {
        CameraInfo info = CameraHolder.instance().getCameraInfo()[mCameraId];
        if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
            rotation = (info.orientation - mOrientation + 360) % 360;
        } else {  // back-facing camera
            rotation = (info.orientation + mOrientation) % 360;
        }
    }
    mMediaRecorder.setOrientationHint(rotation);

下面是文档setOrientationHint()解释的信息的存储:

设置输出视频回放的方位提示。 这种方法应该称为前准备()。 此方法不会触发源视频帧的视频录制过程中旋转,但添加包含在输出视频的旋转角度的组合物基质,如果输出格式是OutputFormat.THREE_GPP或OutputFormat.MPEG_4使得视频播放器可以选择合适的方向进行播放。 请注意,某些视频播放器可以播放选择过程中忽略的视频compostion矩阵。

由于您使用的是框架的VideoView部件播放视频时,它应该已经正确处理组成矩阵的信息,你应该只需要比较视频的宽度和高度,以决定是否设置为横向或纵向的播放活动。 一个简单的方法来做到这一点是只调用ThumbnailUtils.createVideoThumbnail()内部使用MediaMetaDataRetriever ),并检查返回的位图的分辨率。



Answer 2:

类似如何人。 在他的回答提出,我用的是MediaMetadataRetriever但与METADATA_KEY_VIDEO_ROTATION键:

MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
mediaMetadataRetriever.setDataSource( absoluteVideoFilePath );
String orientation = mediaMetadataRetriever.extractMetadata(
         MediaMetadataRetriever.METADATA_KEY_VIDEO_ROTATION );

我检查捕获视频与前置摄像头的所有4点不同的方向,和元数据始终是不同的。 注: METADATA_KEY_VIDEO_ROTATION需要API等级17以上。



Answer 3:

您可以使用MediaMetadataRetriever让你的视频的宽度和高度,并加载它以前找出方向。



文章来源: How can I ensure correct playback orientation of recorded video?