问题标签 [audiotrack]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
586 浏览

android - Android AudioTrack 和 AudioRecord 的奇怪行为

我创建了 Audio Track 和 Audio Recorder 对象,并试图将麦克风的声音传回扬声器。

为此,我创建了一个任务,从音频记录任务“读取”音频数据并将其“写回”到音频轨道。它似乎工作正常。然而,在玩这个应用程序尝试一些数据操作时,我了解到这个复制音轨数据并写回来的任务实际上什么都不做——我删除了它,只保留了两行:

没有读取或写入 - 应用程序继续工作- 即麦克风数据回显到扬声器!在实践中,我试图执行的所有读写操作似乎都被忽略了!

其他一些意想不到的行为:

我试图停止这个过程购买呼叫AudioTrack.stop()AudioTrack.pause()- 没有任何反应,停止音频的唯一方法是通过呼叫AudioRecord.stop(),但是在弯腰之后AudioRecord我找不到重新启动它的方法。

有没有其他人也经历过这种情况?有没有人有办法解决吗?任何人都可以解释 Android 的这种奇怪行为AudioTrackAudioRecord

0 投票
2 回答
2259 浏览

android - Android:AudioTrack 与多线程

我遇到了一个问题,我想在静态模式下反复播放半秒AudioTrack,但声音断断续续。但是,我注意到在 aTransitionDrawable并行运行时声音非常清晰。

我的代码的简化骨架是:

正如你所看到thread的,不是在 UI 线程上执行的,所以我假设它track面临着多线程问题。我不认为播放转换的 UI 线程会消耗整个 CPU,因为我的音频是并行播放的。似乎该活动以某种方式消耗了 CPU,并且没有执行任何其他操作。

我也尝试过使用view.post(new Runnable() {...});in playSoundClip(),但这并没有帮助。

我考虑将所有内容更改为AsyncTask,但恕我直言,这不会改变任何内容,因为它仍然是后台任务。由于我不需要使用声音更新 UI 元素,并且过渡仍然必须并行播放,我什至没有尝试过。

一个解决方案可能是总是让一些过渡并行运行(实际的或虚拟的),但这对我来说听起来很糟糕(双关语?)。

有谁知道另一种方法可以让我track始终保持清晰?


编辑:
在这个问题上做了更多工作并扩展了我的程序后,我注意到我必须使用上面列出的线程方法,因为那里的逻辑需要一些时间才能完成,我无法在 UI 上完成所有操作-线程了。目前,我在播放音频时播放了一个虚拟过渡,这对我来说仍然听起来很糟糕。因此,如果您仍然可以对该主题提供一些见解,欢迎您在此处发布/回答。

0 投票
1 回答
1605 浏览

android - 是否可以生成少于 1 秒长的音调/音频?还是立即切断播放器?

我正在尝试创建一个应用程序,该应用程序根据您在屏幕上触摸的位置生成音调(当前频率由触摸点的 y 值确定)但是我无法生成小于一秒的音调不会让我的应用崩溃!我从这里的答案中获取代码并调整它以在我触摸屏幕时播放,但是当我将持续时间变量更改为小于 1 的值时,应用程序崩溃了!是否可以产生小于 1 秒的音调?

我想创建不到一秒的音调的唯一原因是,当我暂停或停止音轨时,音频播放器似乎没有立即切断。这些是我演奏和产生音调的方法:

0 投票
1 回答
853 浏览

android - Between AudioTrack.write and AudioFlinger.read

I am checking the possibility of this way, if I got any silly thinking, please correct me. I would like to enhance the audio quality. According to some knowledge from web, I found that When an audio/music/sound is played , the AudioTrack will write() PCM data to the sharedbuffer, and then AudioFlinger will read() the PCM data form this sharedbuffer. The idea is to use a service to intercept the PCM data after it is wrote by AudioTrack.write(), modify the PCM data, and then restore it back to the sharedbuffer for AudioFlinger to read(); Could anyone help/correct me, please?

0 投票
2 回答
2097 浏览

android - 无法在音轨对象上暂停:android

在我的应用程序中,我已经成功录制了音频,现在我正在使用以下功能播放它:

但是,当单击按钮时,我想暂停正在播放的录音,它会暂停,但在恢复时没有任何反应。以下是相同的代码:

任何帮助都会很棒。谷歌上对这个没有太多帮助。我几乎完成了我的应用程序,但现在在最后一刻我遇到了这个问题..请帮助我!

0 投票
3 回答
3603 浏览

android - Android AudioTrack 播放慢

我正在尝试使用 AudioTrack 流式传输音乐。曲目播放,但音频以一半的速度播放。这首歌就像变成了慢动作。

在 CircularByteBuffer 中,字节被写入另一个线程并在这个线程上读取。这首歌持续播放,没有任何停顿,但播放速度很慢。我不知道它可能是什么。有任何想法吗?

0 投票
1 回答
696 浏览

java - AsyncTask:在 AudioTrack 中实现 executeOnExecutor() 线程类

对于并行执行,我遇到了问题AsyncTaskexecuteOnExecutor()但是在发送和接收音频时,我得到的声音有延迟(400 毫秒到 600 毫秒)。这是我的代码:

录音通话代码:

两个用户之间通话时,首先发起通话,如图所示。

------>> 从用户 1 呼叫用户 2 发起呼叫 = 0

如果 user2 接到呼叫,则发起呼叫 = 1 <<------

如果initial call = 1,则在两个用户之间传输数据,即发送和接收语音数据。

------>> 当Initiate call = 1时,传输数据

发送和接收语音数据<<------

播放音频数据有什么问题?

播放音频时出现语音延迟。发送和接收响应之间的时间太长,大约 400 毫秒到 600 毫秒。我需要做什么来解决这个问题?第一次持有 5 个数据块,当它收到 5 个音频数据时立即开始一个接一个地播放,如上面的代码所示。

0 投票
0 回答
990 浏览

android - 自 Android 4 ICS 以来的 Android Audiotrack 点击噪音

我的应用程序中还集成了一个钢琴键盘。在使用 设置播放速率时,我遇到了音轨问题setPlayBackRate(...)。为了在键盘上获得下一个半音,我使用以下公式更改播放速率:

这在Android 2.2.1和上运行良好2.3.5,但在4.0/4.1.2(Galaxy Nexus)上播放声音时我会听到咔哒声。

任何想法如何解决这个问题?

提前致谢

0 投票
1 回答
1203 浏览

javascript - 即时创建具有单独音轨的视频播放列表,今天这可能吗?

我一直在整个网络上进行研究,但还没有找到任何确凿的答案,所以我想问问 stackoverflow 社区。

我有一个 HTML(5) 页面,它应该具有以下功能:

  • 视频“时间轴”(无需编辑,但用户可以一个接一个地添加视频并在此时间轴内重新排序视频)
  • 可以将单独的音轨(音乐/效果,非同步语音)添加到此空间,并应与视频的排列一起播放。

视频的整个“时间线”可被视为一个长剪辑,音频应与时间线的整个长度一起播放,而不是按轨道播放。

由 3 个 1 分钟剪辑组成的 3 分钟时间线需要匹配的 3 分钟音频剪辑,或者如果音频剪辑较短,则应在完成后开始循环。

根据我的研究,我收集到的任何使用 HTML5/JS 的东西都需要支持@mediagroupor audioTracks(尽管后者并没有真正解决围绕作为一个时间线播放的多个视频的问题)。

该项目的浏览器要求是:IE9 及以上、Chrome、Firefox、iPad。

这东西今天甚至可能吗?

如果是的话,任何关于如何实现这一点的想法都将不胜感激。

0 投票
1 回答
1206 浏览

android - 试图建立“你好,世界!” 使用 Jelly Beans 新的低级媒体 API 的媒体播放器活动

我正在尝试测试新的低级媒体 API 功能、MediaExtractor 和 MediaCodec。我正在遵循本指南:

http://dpsm.wordpress.com/2012/07/28/android-mediacodec-decoded/

我把这个函数放在一起,其中songsList.get(songIndex).get("songPath")是另一个函数给出的 mp3 文件的路径。

它似乎没有抛出任何重大错误,但没有声音,并且在日志中有一条消息“libwvm.so not found”和“OMX_getExtensionIndex failed”。在我尝试使用日志编写代码之前,也许有人有一些想法。我正在使用 Jelly Bean 版本 4.1.2 运行 AVD,我无法从 Eclipse 进行调试,所以我只使用日志来捕获错误。

编辑十一月 16:我忘记了明显的 audioTrack.play() 函数,但这会导致崩溃,因此再次将其注释掉。