首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android翻转前置摄像头反转视频

Android翻转前置摄像头反转视频
EN

Stack Overflow用户
提问于 2013-08-27 09:46:36
回答 3查看 21.9K关注 0票数 22

我正在尝试从Android的前置摄像头录制视频,同时也在表面视图上显示。

我发现前置摄像头在录制过程中会镜像翻转视频,即使表面视图显示的是正常视图。

我有什么方法可以防止或修复它吗?

我读过像How to keep android from inverting the image from the front facing camera?这样的stackoverflow文章

但它似乎只是在谈论用前置摄像头拍照和反转图像,我已经用矩阵修复了这一点。然而,似乎使用矩阵来表示视频并不起作用。

EN

回答 3

Stack Overflow用户

发布于 2017-07-10 23:59:00

在我的例子中,我只需要在玩它的时候水平翻转。当录制时,它已经翻转为镜像效果,正如我所见,这是不可能修改它。然而,下面的代码解决了我在玩游戏时的问题。

代码语言:javascript
复制
videoPlayer.setScaleX(-1);
票数 4
EN

Stack Overflow用户

发布于 2013-09-16 18:57:48

您必须应用矩阵变换,如下所示:

代码语言:javascript
复制
if(isFrontCamera) {
    m.preScale(-ratio, ratio);
} else {
    m.preScale(ratio, ratio);
}

假设你不调整任何东西的大小,比例将是1,这将使非前置摄像头preScale过时。

票数 0
EN

Stack Overflow用户

发布于 2021-09-24 17:39:05

如果您需要翻转视频记录并将其保存到内部存储中,那么您可以使用android studio中的Mp4Composer依赖。

首先,您需要添加依赖项,

步骤1.将JitPack存储库添加到构建文件中

代码语言:javascript
复制
allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

步骤2.添加依赖项

代码语言:javascript
复制
dependencies {
        implementation 'com.github.MasayukiSuda:Mp4Composer-android:v0.4.1'
}

下面是与垂直翻转相同的示例代码。你可以通过生成flipVertical(true)来翻转它。你也可以通过flipHorizontal(true)水平翻转它。

代码语言:javascript
复制
private void flipVideo(String path, String destinationPath) {
        new Mp4Composer(sourcePath, destinationPath)
        .size(1280, 720)
        .fillMode(FillMode.PRESERVE_ASPECT_FIT)
        //.flipHorizontal(true)
        .flipVertical(true)
        // .rotation(Rotation.ROTATION_270)
        //.filter(glFilter)
        //.mute(muteCheckBox.isChecked())
        //.timeScale(2f)
        //.changePitch(false)
        //.trim(2000, 5000)
        .listener(new Mp4Composer.Listener() {
            @Override
            public void onProgress(double progress) {
                Log.d("app_log", "onProgress = " + progress);
                runOnUiThread(() -> progressBar.setProgress((int) (progress * 100)));
            }

            @Override
            public void onCompleted() {
                Log.d("app_log", "onCompleted(): video conversion completed");
               runOnUiThread(() -> {
                   Toast.makeText(CameraActivity.this, "video saved under " + destinationPath, Toast.LENGTH_SHORT).show();
               });
            }

            @Override
            public void onCanceled() {
            }

            @Override
            public void onCurrentWrittenVideoTime(long timeUs) {
            }

            @Override
            public void onFailed(Exception exception) {
                Log.e("app_log", "onFailed() " + exception.getMessage());
            }
        })
        .start();
    }

像这样调用这个方法,

代码语言:javascript
复制
flipVideo(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/video_input.mp4", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/video_output.mp4");

更多信息:Mp4Composer-android

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18455666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档