我可以使用 MediaRecorder 在 Android 中通过捕获静音检测来录制音频吗?

     2023-02-25     143

关键词:

【中文标题】我可以使用 MediaRecorder 在 Android 中通过捕获静音检测来录制音频吗?【英文标题】:Can I use MediaRecorder to record audio with capture silence detection in Android? 【发布时间】:2021-01-28 01:25:22 【问题描述】:

我使用 MediaRecorder 录制音频,是否可以在用户几秒钟未说话时检测静音并停止录制语音,并在用户恢复说话时自动重新录制?

【问题讨论】:

【参考方案1】:

,为了检测静音,您需要检查音频数据。

MediaRecorder just writes the audio to a file 可以在MediaRecorder's state machine diagram 中看到。

解决方案是使用AudioRecord 并在将字节写入文件之前分析数据。由于您想恢复录音,因此您需要保持麦克风打开并为用户说话处理传入的音频。

分析数字音频数据的主题称为信号处理,您可以在其中找到许多资源:

Simplest way of detecting where audio envelopes start and stop

What dBFS threshold should I set for differentiation between silence and NOT silence

但对于第一次尝试,我会使用Audio record in android and FFT 并假设一个安静的房间。你必须想出一个合适的触发水平(见上面的链接)。

请注意,处理确实会增加一些延迟,您必须进行补偿,即缓冲区 0 有静音,缓冲区 1 用户开始说话但不触发阈值,缓冲区 2 用户正在说话并且触发阈值。除了缓冲区 2,您可能还想保存缓冲区 1。

【讨论】:

MediaRecorder 在某些设备上启动失败(启动失败:-2147483648 和 -19)

】MediaRecorder在某些设备上启动失败(启动失败:-2147483648和-19)【英文标题】:MediaRecorderfailsonstartonsomedevices(startfailed:-2147483648and-19)【发布时间】:2013-12-3106:54:51【问题描述】:我已经阅读了有关MediaRecorderandfollowedtheGUIDESonAndroid... 查看详情

MediaRecorder 切换视频轨道

】MediaRecorder切换视频轨道【英文标题】:MediaRecorderswitchvideotracks【发布时间】:2021-12-2021:52:24【问题描述】:我正在使用MediaRecorderAPI在网络应用程序中录制视频。该应用程序可以选择在相机和屏幕之间切换。我正在使用Canvas来... 查看详情

MediaRecorder - 如何在录制时播放视频块/块?

】MediaRecorder-如何在录制时播放视频块/块?【英文标题】:MediaRecorder-Howtoplaychunk/blobofvideowhilerecording?【发布时间】:2018-03-1912:52:44【问题描述】:我目前有一个使用MediaRecorder录制的MediaStream。在录制结束时在recorder.stop()之后,... 查看详情

我可以从 MediaRecorder 写入我的 android / linux 管道吗?

】我可以从MediaRecorder写入我的android/linux管道吗?【英文标题】:CaniwritefromMediaRecordertomyandroid/linuxpipe\'s?【发布时间】:2021-04-2300:11:56【问题描述】:我正在使用命令创建android管道System.Diagnostics.Process.Start("mkfifo",$"/dat... 查看详情

在 Android 中使用 AudioRecorder/MediaRecorder 录制 FLAC 音频

】在Android中使用AudioRecorder/MediaRecorder录制FLAC音频【英文标题】:RecordingFLACaudiousingAudioRecorder/MediaRecorderinAndroid【发布时间】:2017-08-2406:09:58【问题描述】:有什么方法可以在AndroidStudio中使用MediaRecorder的AudioRecorder以FLAC或WAV格式... 查看详情

MediaRecorder:启动失败:-19

】MediaRecorder:启动失败:-19【英文标题】:MediaRecorder:startfailed:-19【发布时间】:2016-12-3013:52:21【问题描述】:我正在尝试了解如何使用相机录制视频。但它总是在开始录制时崩溃。而且我不知道为什么会这样。我现在不需要使... 查看详情

Android 使用 MediaRecorder 捕获音频。

】Android使用MediaRecorder捕获音频。【英文标题】:AndroidUseMediaRecordertocaptureaudio.【发布时间】:2012-07-0522:41:49【问题描述】:我需要从麦克风捕获音频,并且在用户停止说话后应用程序需要识别该用户停止说话。我有一个Android2.2F... 查看详情

使用 MediaRecorder 将音频和视频流合并为一个文件 [重复]

】使用MediaRecorder将音频和视频流合并为一个文件[重复]【英文标题】:CombineaudioandvideostreamsintoonefilewithMediaRecorder[duplicate]【发布时间】:2019-03-1700:34:51【问题描述】:我正在制作一个小型交互式动画/游戏(使用PixiJS在画布上)... 查看详情

通过 MediaRecorder 录制音频

】通过MediaRecorder录制音频【英文标题】:RecordaudioviaMediaRecorder【发布时间】:2012-06-1222:35:39【问题描述】:我正在尝试,但出现错误,我尝试更改所有内容,但没有任何效果。最近两个小时我试图找到错误,我也使用了Log类,... 查看详情

MediaRecorder 中记录块的回调

】MediaRecorder中记录块的回调【英文标题】:CallBackfortherecordedblockinMediaRecorder【发布时间】:2010-12-1413:55:40【问题描述】:我正在尝试使用MediaRecorder类从麦克风录制声音。在提到的类中,我们刚刚使用setOutputFile方法来设置输出文... 查看详情

Android:使用 MediaRecorder 录制音频会在 whatsapp 音频通话期间产生 runtimeException

】Android:使用MediaRecorder录制音频会在whatsapp音频通话期间产生runtimeException【英文标题】:Android:RecordAudiousingMediaRecordergivesruntimeExceptionduringwhatsappaudiocall【发布时间】:2017-04-1909:27:44【问题描述】:我正在尝试在我的应用程序中... 查看详情

MediaRecorder.ondataavailable - 数据大小始终为 0

】MediaRecorder.ondataavailable-数据大小始终为0【英文标题】:MediaRecorder.ondataavailable-datasizeisalways0【发布时间】:2017-01-1613:43:32【问题描述】:我正在尝试使用WebAPIMediaRecorder在浏览器中录制用户的声音。在这个阶段,我想要对录制... 查看详情

尽管以纵向视图录制,但使用 mediaRecorder 和表面视图录制的 Android 视频无法在横向视图中播放

】尽管以纵向视图录制,但使用mediaRecorder和表面视图录制的Android视频无法在横向视图中播放【英文标题】:AndroidvideorecordedusingmediaRecorderandsurfaceviewdoesn\'tplayinLandscapeViewalthoughrecordedinPortraitView【发布时间】:2016-08-0105:10:05【问题... 查看详情

使用 Android MediaRecorder 暂停和恢复(API 级别 < 24)

】使用AndroidMediaRecorder暂停和恢复(API级别<24)【英文标题】:Pause&ResumewithAndroidMediaRecorder(APIlevel<24)【发布时间】:2017-01-1206:47:30【问题描述】:在使用MediaRecorder时,对于低于24的API级别,我们没有暂停/恢复。所以有一... 查看详情

Android:使用 MediaRecorder 录制音频 - 文件不播放

】Android:使用MediaRecorder录制音频-文件不播放【英文标题】:Android:recordingaudiousingMediaRecorder-filedoesntplay【发布时间】:2017-11-1000:47:55【问题描述】:我已经使用MediaRecorder直接从Google实现了示例代码我还添加了一些属性并将文件... 查看详情

为啥我在停止 MediaRecorder 时会收到 IllegalStateException?

】为啥我在停止MediaRecorder时会收到IllegalStateException?【英文标题】:WhyamIgettinganIllegalStateExceptionwhenstoppingMediaRecorder?为什么我在停止MediaRecorder时会收到IllegalStateException?【发布时间】:2020-02-1416:12:33【问题描述】:为了更好地... 查看详情

我可以在ifelse中使用多个and参数吗?(代码片段)

我试图在shell中grep多个参数。我下了像./scriptarg1arg2..argN这样的命令我希望他们行动egrep-i“arg1”mydata|egrep-i“arg2”|......egrep-i“argN”|awk-fdisplay.awk以匹配AND格式的模式。我的过程出了什么问题?像egrep-i“arg1”mydata|这样的代码甚... 查看详情

Google 通过 MediaRecorder API 满足流媒体需求

】Google通过MediaRecorderAPI满足流媒体需求【英文标题】:GooglemeetstreamingthroughMediaRecorderAPIs【发布时间】:2021-02-0813:02:56【问题描述】:我正在尝试使用媒体选项使用getDisplayMedia录制googlemeet音频和视频。我可以通过getDisplayMedia录制... 查看详情