当前位置: 首页 > 知识库问答 >
问题:

Android webRTC音频音量

皇甫鸿远
2023-03-14

我在android上使用APPRTCdemo应用程序。我试着让它播放来自另一个同龄人的声音,音量与Android设置中设置的音量一样大。因此,如果用户将设备静音,则不会听到音频。我几乎尝试了每一个Android API调用,但似乎对音量没有任何影响。以下是我尝试过的东西:AudioManager AudioManager=(AudioManager)_context.getSystemService(context.AUDIO_SERVICE);int-volume=audioManager.getStreamVolume(audioManager.STREAM_VOICE_CALL);

    volume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
    volume =audioManager.getStreamVolume(AudioManager.STREAM_RING);
    volume =audioManager.getStreamVolume(AudioManager.STREAM_ALARM);
    volume =audioManager.getStreamVolume(AudioManager.STREAM_NOTIFICATION);
    volume =audioManager.getStreamVolume(AudioManager.STREAM_SYSTEM);

    audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
    audioManager.setStreamVolume(AudioManager.MODE_IN_COMMUNICATION, 0, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
    audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, 0,AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
    audioManager.setStreamMute(AudioManager.MODE_IN_COMMUNICATION, true);
    audioManager.setStreamMute(AudioManager.STREAM_SYSTEM, true);
    audioManager.setStreamMute(AudioManager.STREAM_RING, true);
    audioManager.setStreamMute(AudioManager.STREAM_MUSIC, true);
    audioManager.setStreamMute(AudioManager.STREAM_NOTIFICATION, true);

共有3个答案

邹英悟
2023-03-14

如果您只想静音音频,您可以使用smth如下结构:

inputMediaStream.audioTracks.getFirst().setEnabled(false);

在webrtc的源代码中,您可以找到src/webrtc/modules/audio _ device/Android/Java/src/org/webrtc/voice engine/webrtcaudiotrack . Java,它使用

audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, volume, 0);

代码来改变音量(我认为它应该工作正常)。所以你的问题可能在其他地方。

鲁波光
2023-03-14

如果您想静音流,您可以执行以下操作:

RemoteStream.audioTracks.get(0).setEnabled(false); //in case you have only one audio track 

如果流中有多个音轨,可以将其置于循环下。这是经过测试的代码,静音/取消静音效果非常好。

荆利
2023-03-14

我遇到了同样的问题。我没有找到任何关于它的文档,但我发现你不能将AudioManager.STREAM_VOICE_CALL流静音。即使将音量设置为 0,您仍然可以听到它。

我不知道这是Android系统的一部分还是厂商做出的修改,但我测试了几款有相同行为的手机和平板电脑。

如果您尝试在通话期间将音频静音,则可以轻松进行测试,您可以根据需要按音量调低键,但它不允许您将其完全静音。

我想这一切背后的想法是,当唯一的问题是音频被静音时,防止用户认为呼叫工作不正常。

 类似资料:
  • 音频概述 没有音频的游戏是不完整的,例如背景音乐或音响效果。Unity 的音频系统灵活而强大。它可以导入大多数标准音频文件格式,并且为播放 3D 空间中的声音提供了复杂的功能,以及可选的音响效果,例如回音和过滤。Unity 还可以记录来自用户机器上任意可用麦克风的音频,以便在游戏过程中使用,或者用于存储和传输。 基础理论 在现实生活中,声音由对象发出,并被听众听到。声音被感知的方式取决于许多因素。

  • 音频 Unity 的音频功能包括完整 3D 空间声音、实时混音和母带处理、混音层次结构、快照、预定义效果等等。 阅读本节以了解 Unity 中的音频,包括剪辑、声源、侦听器、导入和声音设置。 相关教程: 音频 相关的提示、技巧和故障排除,等参阅 音频知识库 部分。

  • Audio接口仅适用于780和更高版本的手机QQ,如需在780以下版本使用音频功能,请使用原来的接口 音频播放接口分为普通音频接口(normal)和音效接口(effect)。普通接口和老接口类似,支持play,pause等方法,以及各种属性和事件(详情参考文档末尾的表)。effect接口用于播放短时,高频的音效,建议尽可能复用同一个对象来播放音频。ios只能播放,停止音效。android可以播放,

  • InnerAudioContext jd.createInnerAudioContext() 创建内部 audio 上下文 InnerAudioContext 对象。 返回值 InnerAudioContext InnerAudioContext InnerAudioContext 实例,可通过 jd.createInnerAudioContext 接口获取实例。 属性 string src 音频

  • 问题内容: 我正在设计一个简单的调谐器,所以我的目标是显示音符名称(A,B,F#)以及理论声音和实际输入之间的 距离( 以分为单位)。 我是音频和信号处理的新手,所以我做了一些研究,发现 了一个 叫做快速傅立叶变换 的东西 ,它可以分析字节并给我频率。另外,我发现了一些Java库,例如通用数学和JTransforms,所以我不会自己编写硬代码。 我相信就这样,因为每个范围的频率都可以以相同的气质直

  • 我想从视频中提取对齐的音频流。目标是获得与视频精确对齐的音频序列。 问题:视频和音频序列不对齐。输出音频持续时间比视频输入短。 要复制的脚本: 我的尝试(没有成功): 按照此答案中的建议添加 添加,同时导出视频(链接) 在Audacity中打开。那里的持续时间是 在VLC中打开。持续时间: 显式设置帧率 其他视频文件 如果能给我一些建议,我将不胜感激。非常感谢。