Android Camera2视频播放视频和音频不同步

2024-04-07

我在使用 android 相机 2 api 时遇到了问题。我可以录制视频,但在播放过程中,仅播放音频。视频播放完毕后,时间会提前 10 分钟到 2 小时,然后播放视频。我从来没有听说过这样的问题。我几乎关注了this https://github.com/googlesamples/android-Camera2Video。这是设置我的媒体记录器的代码:

    mMediaRecorder = new MediaRecorder();
    // Step 2: Set sources
    mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
    mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
    mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    //limit the video duration
    mMediaRecorder.setMaxDuration(90000);    //90s
    // Step 3: Set a CamcorderProfile (requires API Level 8 or higher)
    mMediaFile = getOutputMediaFile();
    mMediaRecorder.setOutputFile(mMediaFile.toString());
    mMediaRecorder.setVideoEncodingBitRate(1000000);
    mMediaRecorder.setVideoFrameRate(30);
    mMediaRecorder.setVideoSize(mVideoSize.getWidth(),mVideoSize.getHeight());
    mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
    mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
    //since video is portrait, rotation is 90
    if(!isFrontFacing) {
        mMediaRecorder.setOrientationHint(270);
    } else{
        mMediaRecorder.setOrientationHint(90);
    }
    mMediaRecorder.prepare();

这是开始录制的代码:

try {
                            closePreviewSession();
                            prepareVideoRecorder();
                            SurfaceTexture texture = mTextureView.getSurfaceTexture();
                            assert texture != null;
                            texture.setDefaultBufferSize(mPreviewSize.getWidth(),
                                    mPreviewSize.getHeight());
                            mPreviewBuilder = mCameraDevice.createCaptureRequest
                                    (CameraDevice.TEMPLATE_RECORD);
                            List<Surface> surfaces = new ArrayList<Surface>();
                            Surface previewSurface = new Surface(texture);
                            surfaces.add(previewSurface);
                            mPreviewBuilder.addTarget(previewSurface);
                            // Set up Surface for the MediaRecorder
                            mRecorderSurface = mMediaRecorder.getSurface();
                            surfaces.add(mRecorderSurface);
                            mPreviewBuilder.addTarget(mRecorderSurface);
                            // Start a capture session
                            // Once the session starts, we can update the UI and start recording
                            mCameraDevice.createCaptureSession(surfaces, new CameraCaptureSession.StateCallback() {

                            @Override
                            public void onConfigured(@NonNull CameraCaptureSession cameraCaptureSession) {
                                mPreviewSession = cameraCaptureSession;
                                updatePreview();
                                getActivity().runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {
                                        // UI
                                        isRecording = true;

                                        // Start recording
                                        mMediaRecorder.start();
                                    }
                                });
                            }

                            @Override
                            public void onConfigureFailed(@NonNull CameraCaptureSession cameraCaptureSession) {
                                Activity activity = getActivity();
                                if (null != activity) {
                                    Toast.makeText(activity, "Failed", Toast.LENGTH_SHORT).show();
                                    }
                                }
                            }, mBackgroundHandler);
                        } catch (RuntimeException e) {
                                Toast.makeText(getContext(), "You're resolution isn't supported.", Toast
                                        .LENGTH_SHORT).show();
                            getActivity().finish();
                        }
                        catch (CameraAccessException e) {
                            getActivity().finish();
                        }

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Camera2视频播放视频和音频不同步 的相关文章

  • 避免 XferMode 替换画布上的颜色

    我正在尝试替换使用在画布上绘制的内容的颜色避免Xfer模式 http developer android com reference android graphics AvoidXfermode html 从 android 文档来看 它看
  • 通过存储访问框架 (SAF) 启用显示/隐藏 SD 卡的额外功能

    我正在使用存储访问框架 SAF Intent intent new Intent Intent ACTION OPEN DOCUMENT intent addCategory Intent CATEGORY OPENABLE intent
  • listview getChildAt() 返回 null

    我一直在做一个android项目并陷入了一个问题 我用谷歌搜索但没有找到答案 在我的项目中 有一个名为viewsurahfragment它包含一个 id 为的列表视图lv showquran 我想突出显示指定索引处的列表视图的视图 我正在使
  • Recyclerview 中的 view.GONE 仍保留空间

    我在网上搜索了一下 发现 view invisible 和 view gone 之间有区别 vie gone 必须消失而不保留空间 但它不会发生在我身上 我该如何解决它 请帮忙看看这两张图片的链接 Android模拟器上的结果图 https
  • 更新房间迁移的行

    是否可以编写迁移来更新某个表的所有先前数据 我正在为我的房间数据开发加密 如果我可以在迁移后加密所有行 那就太好了 那么 在定义迁移时 您可以访问支持SQLite数据库 https developer android com referen
  • 自定义 ListView 和 onclick

    这是我的代码 一切 我按照你说的做了 但我仍然无法点击任何内容 我的意思是我可以点击但没有任何反应 package fixus core import java util ArrayList import java util Iterato
  • 如何让文字发光?

    我们可以将发光效果应用于任何文本 如下所示 Updated Please also tell me what things i need to create something like this 我需要为此使用特殊字体吗 如何使用以下命令
  • 如何测试返回DataSource.Factory的Dao方法?

    转移后从SqliteOpenHelper to room在我的应用程序中 我尝试编写测试DAO class 我的 DAO 看起来像这样 Query SELECT FROM cards fun getAllCards List
  • 如何解决Android中的NullPointerException错误?

    下面的代码在 Eclipse 的模拟器中运行顺利 但在 Android 手机和平板电脑上运行时出现问题 public class RingerActivity extends Activity Called when the activit
  • 以编程方式更改小部件布局

    假设我有两个小部件布局 Layout1 和 Layout2 小部件的默认值是 Layout1 但我允许用户选择 他们希望小部件采用哪种布局 所以如果用户更改为 Layout2 如何以编程方式将布局更改为 Layout2 小部件没有像活动那样
  • 当我滚动 gridview 时图像发生变化

    GridView 从 URL 加载图像 当我滚动 gridview 时 更多图像机会 如何修复它 我尝试过 imageAdapter notifyDataSetChanged gridView invalidateViews 我还没有找到这
  • Android MapView v2 黑屏

    我一直在尝试实现 android 的 MapView v2 除了这个错误之外 我让它工作得很好 This is what it looks like when I load the app from scratch 如您所见 没有任何问题
  • Google Play 将我的应用程序版本显示为“随设备而变化”

    我最近在 Google Play 商店更新了我的应用程序 在我的 Play 商店应用程序页面中 版本显示为因设备而异我没有上传多个 apk 而是使用单个 apk 更新了我的应用程序 那么为什么它显示版本为因设备而异 是否有任何设置可以删除此
  • Web 服务凭证 - OpenID/Android AccountManager?

    我正在构建一个网络服务 并想使用用户的谷歌帐户凭据 该服务在 GAE 上运行 并将有一个 Web 客户端和一个 Android 本机客户端 这是我第一次尝试类似的事情 我一直在阅读有关 OpenID 和 Android AccountMan
  • 如何保存/加载 BigInteger 数组

    我想保存 加载BigInteger数组传入 传出 SharedPreferences 如何做呢 例如对于以下数组 private BigInteger dataCreatedTimes new BigInteger 20 Using Gso
  • 如何以编程方式将 Android 设备连接到“WPA2 PSK”安全 WiFi 热点网络?

    在我的 Android 应用程序中 我尝试将我的 Android 设备连接到 WPA2 PSK 安全连接 经过大量搜索后 我编写了以下代码 if securityMode equalsIgnoreCase WPA2 WPA2 wifiCon
  • Android 位图到 WebRtc I420 帧损坏

    尝试通过 WebRtc 流式传输位图 我的 Capturer 类大约如下所示 public class BitmapCapturer implements VideoCapturer VideoSink private Capturer c
  • 当 SystemUI 在 Android Boot 中加载时

    如何知道系统 UI 何时加载Android启动过程 状态栏和导航栏视图到底绘制在哪里 作为SystemUI是一个特权应用程序 那么它是否在启动器应用程序 主屏幕 启动之前加载 我不知道 欢迎任何建议 下面是一系列简要解释的步骤 希望能够阐明
  • 从 SD 卡读取 pdf 文件

    我想阅读存储在 SD 卡中的 pdf 文件 我尝试使用此代码片段 File file new File Environment getExternalStorageDirectory vvveksperten ypc pdf Package
  • onActivityResult() Intent 数据始终为 null

    有人可以告诉我为什么Intent data总是为空 Override protected void onActivityResult int requestCode int resultCode Intent data super onAc

随机推荐

  • 更快的循环方法(“for”和“foreach”)? [复制]

    这个问题在这里已经有答案了 这个问题源于我问上一个问题的原因foreach循环 我有一个很大的字符串数组 比如说数千个 我想迭代该数组并且还能够根据特定条件进行突破 并且我需要最佳性能 一些示例代码 for int i 0 i lt arr
  • 单击按钮的用户脚本

    我想使用greasemonkey 单击 立即购买 按钮 UserScript name script namespace sc include version 1 require http ajax googleapis com ajax
  • 理解 kubernetes 容器上的“stdin: true tty: true”?

    我已经在网上到处做好了准备 但答案并没有得到彻底的解释 我希望这个问题如果得到解答 可以提供对此事的更新和彻底的解释 为什么有人会使用以下参数定义容器 stdin true tty true Also if docker run it 将执
  • jQuery 将光标向后移动“X”个空格

    我需要它 以便当按下按钮时 光标将 1 找到句子的结尾 2 将光标从句末向后移动 x 多个空格 x为变量 这是一个小提琴 gt jsFiddle http jsfiddle net jcP9q HTML span From the end
  • 时间复杂度单循环与多个顺序循环

    今天 我和我的同事就一个特定的代码片段发生了一场小争论 代码看起来像这样 至少 他想象中是这样的 for int i 0 i lt n i Some operations here for int i 0 i lt m i m is alw
  • 使用 javascript jQuery 突出显示 html 中的文本

    我想以编程方式突出显示 p 标记中的所有关键字 不区分大小写 如果关键字是 var keywords hello thanks goodbye this should be an array p hello world p 你好应该以蓝色突
  • 如何在 C# / winforms 中将图像裁剪为圆形?

    编辑 重复 问题中给出的代码没有为我解决问题 我遇到的主要问题是我不能简单地使用 CSS 和 radius 这很容易 这是在 winforms 页面 项目中加载的图像 我必须尝试将正方形 矩形图像变成圆形 我尝试了以下两种方法 结果将发布在
  • 在 C# 中强制保留两位小数[重复]

    这个问题在这里已经有答案了 我有这个问题 找不到解决方案 这非常简单 我不知道为什么我找不到解决方案 问题 如果一个值返回例如 16 60 在c 中我将读取 16 6 但我也需要0 因为paypal API只接受没有小数的值 或者它必须有小
  • pyproject.toml 没有安装我的包依赖项

    这是我第一次与pyproject toml我的印象是 当你列出包裹时abc作为项目的依赖项之一 该包的依赖项也会被安装 即使它们没有明确列出 这是我目前的pyproject toml build system requires setupt
  • 带有 varchar(255) PRIMARY KEY 的表会造成什么损害吗?

    我知道这不是一个好主意 但我想仔细检查一下这不会造成服务器崩溃等疯狂的事情 CREATE TABLE dbo Items Id nvarchar 255 NOT NULL PRIMARY KEY Value nvarchar max NOT
  • 可可豆荚和 Watchkit 扩展

    我尝试为我的应用程序构建一个 WatchKit 扩展 我将 pods 文件更新为如下所示 platform ios 8 0 use frameworks source https github com CocoaPods Specs git
  • 如何避免在连接 (.) 中使用未初始化的值?在 Perl v5.8.4 中 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions perl e use warning
  • 如何在 Matlab 中运行 java .jar

    我需要在 Matlab 中运行 Java jar 文件 我们将文件命名为 MyJar jar 如果有帮助的话 我正在运行 Java 1 8 0 121 b13 我尝试了不同的解决方案 并收到了这些相应的错误 java jar MyJar j
  • 动态启用/禁用 mvc 服务器端验证

    我有一个 mvc 表单multiple提交按钮 保存草稿 和 发布 目的是在单击 保存草稿 按钮并提交表单时跳过客户端 javascript 无阻碍 验证和服务器端验证 但如果单击 发布 按钮 我确实需要触发这两个验证 我的研究让我找到了一
  • 如何使用CSS的bootstrap删除屏幕底部生成的空白?

    我一直在尝试创建一个简单的 html 页面 我需要将 html 覆盖到整个页面高度 但底部留有小空间 在移动设备上打开时看起来更奇怪 请帮忙检查链接 https lp codes github io Random Quote Generat
  • 如何在 jquery 中的第一个子 div 之后追加元素?

    假设我有以下 div div div 1 div div 2 div div 3 div div 4 div div 我怎样才能在 jquery 或 javascript 中做到这一点 以便我可以在 mydiv 的第一个子元素之后附加一个元
  • 困惑于在 Azure 部署的 Web.config 中存储密码的正确过程是什么

    在将 MVC 5 应用程序放到 Azure 上时 我有过一次非常令人沮丧的经历 我一直在阅读以下页面 http www asp net identity overview features api best practices for de
  • 两列上的唯一键可交换

    请建议我如何比较地在两列上应用唯一键 即假设我们有两列 FK Col1 和 FK Col2 如果我们在两列中插入 2 和 6 那么我们应该无法在两列中再次插入 2 和 6 或 6 和 2 请建议我如何实现这一目标 提前致谢 创建一个计算列及
  • 如何使用箭头键在屏幕上移动图形?

    我正在尝试创建一个简单游戏的开始 我想做的第一件事是将图形导入到我的代码中并将其移动到屏幕上 我能够在屏幕上画一个球并移动它 但是当我从文件导入图形时 我无法移动它 我错过了什么或做错了什么 import javax swing impor
  • Android Camera2视频播放视频和音频不同步

    我在使用 android 相机 2 api 时遇到了问题 我可以录制视频 但在播放过程中 仅播放音频 视频播放完毕后 时间会提前 10 分钟到 2 小时 然后播放视频 我从来没有听说过这样的问题 我几乎关注了this https githu