问题标签 [audioformat]

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 回答
1762 浏览

c++ - WASAPI Loopback:保存波形文件

我想使用 WASAPI 记录系统的音频输出,然后将其保存到 .wav 文件中。

到目前为止,我在 WASAPI 上遵循了这些指南:

https://msdn.microsoft.com/en-us/library/windows/desktop/dd316551%28v=vs.85%29.aspx https://msdn.microsoft.com/en-us/library/windows/desktop /dd370800%28v=vs.85%29.aspx

我使用获取缓冲区数据

然后,我正在处理这些数据,只需将其写入 .wav 文件的末尾即可:

formatWAVEFORMATEXaudioClient->GetMixFormat(&format)

显然它的子类型WAVE_FORMAT_EXTENSIBLE是 Float:


在将所有捕获的数据写入文件之前,我填写了标题(在http://www.topherlee.com/software/pcm-tut-wavformat.html之后):

在完成 3 秒的数据写入后,我使用fwrite.


该文件不可读。我怀疑它与WAVE_FORMAT_EXTENSIBLE,但我无法弄清楚。

我尝试覆盖以下几个元素format

产生一个可读的 .wav 文件,但在其中播放一些点击作为静音(我尝试录制一首歌)。

正在产生所有随机噪声。

0 投票
4 回答
6731 浏览

java - 交错立体声 PCM 线性 Int16 大端音频是什么样的?

我知道网上有很多资源解释如何解交织 PCM 数据。在我目前的项目过程中,我看过其中的大部分……但我没有音频处理方面的背景,而且我很难找到关于这种常见音频形式的存储方式的详细说明。

我确实知道我的音频将有两个通道,因此样本将以 [left][right][left][right] 的格式存储......我不明白这到底是什么意思。我还读到每个样本都以 [left MSB][left LSB][right MSB][right LSB] 格式存储。这是否意味着每个 16 位整数实际上编码了两个 8 位帧,或者每个 16 位整数都有其自己的帧用于左通道或右通道?

谢谢大家。任何帮助表示赞赏。

编辑:如果您选择给出示例,请参阅以下内容。

方法上下文

具体来说,我要做的是将交错的 short[] 转换为两个 float[],每个代表左声道或右声道。我将在 Java 中实现它。

我目前的实施

我试过播放由此产生的音频。它非常接近,足够接近,你可以理解一首歌的歌词,但显然仍然不是正确的方法。

格式

如果有人想了解有关音频格式的更多信息,以下就是我所拥有的一切。

  • 格式为 PCM 2 通道交错式大端线性 int16
  • 采样率为 44100
  • 每个 short[] 缓冲区的短裤数为 2048
  • 每个 short[] 缓冲区的帧数为 1024
  • 每个数据包的帧数为 1
0 投票
2 回答
1558 浏览

android - 我可以使用 AudioRecord 录制 24/48k 音频吗?

我正在使用AudioRecord. 目前我使用 44100 作为采样率和 16 位作为AudioFormat.

我可以使用 48000 作为采样率和 24 位AudioFormat吗?

下面是采样率 44100 和音频格式为 16 位的代码。

根据Developer site,44100Hz 是可用的最高采样率。我的问题是,我可以使用 48000Hz 和 24 位音频格式吗?

谢谢

根据此链接,我们可以使用每个样本 24 位来录制音频。24 Bits Per Sample 使用 Android L,样本分辨率将从 16 位 PCM 增加到 24 位以获得更好的结果。尽管 2013 年发布的许多智能手机都支持 24 位 96khz DAC,但 Android 操作系统始终无法使用它。

0 投票
0 回答
304 浏览

android - 三星 Galaxy S5 无法录音

我正在开发一个 android 应用程序,因为我想录制音频并保存到一个文件夹中。

我已经尝试过这个示例代码,它从音频对象(AudioRecord)读取数据,但相同的应用程序在SAMSUNG GALAXY S5(USB 3.0)设备中仅读取0 个字节

这是我的代码..

我还在清单文件中添加了权限

读取 record.read(buffer, 0, min_buff); buffer时仅填充 0

请帮助解决这个问题。

谢谢

0 投票
1 回答
469 浏览

c++ - 带有波形文件的 QAudioFormat

是否可以QAudioFormat在波形文件上使用该类?我想使用该类来获取有关波形文件的信息,例如采样率和比特率。

查看文档并没有太大帮助,我可以找到一个将文件传递给QAudioFormat类的函数。

0 投票
1 回答
470 浏览

c++ - 在 liblvc 中设置音频格式

如何在 libvlc 中设置音频的格式?

libvlc 中有一个函数,但我不知道如何使用它[从这里]

设置解码音频格式。

这只能与 libvlc_audio_set_callbacks() 结合使用,并且与 libvlc_audio_set_format_callbacks() 互斥。

参数 mp 媒体播放器格式 标识样本格式(例如“S16N”或“FL32”)的四字符串

如何设置音频文件的格式,例如 wav 文件?

0 投票
2 回答
5418 浏览

java - Java中音频文件的长度

我在根据字节解析 mp3 文件中的数据时遇到问题。

第一部分输出是正确的,我有一个 254 秒长的 mp3 文件,我从 Github 的 mp3 解析库 mp3agic 获取它的信息。

但是,关于帧长度和持续时间的信息的第二部分是不正确的。

我用来获取帧长度、帧速率和持续时间的代码是:

首先,为什么帧长度和其他测量结果甚至是负数?那有什么意思?以及如何使用来自音频输入流和音频格式的信息准确计算 mp3 文件的持续时间?

0 投票
0 回答
235 浏览

android - AudioRecord 产生断断续续的音频

我正在使用 AudioRecord 捕获音频数据包并将它们流式传输到语音识别服务器。在我的 Galaxy Note 4、Android M 设备中,它运行得非常好。但是,当我使用其他设备(Nexus 7/Android L 和 HTC combo/android ICS)时,生成的音频是断断续续的,声音中每半秒就会出现一次故障噪音,这会破坏服务器的语音识别过程。

我知道这是一个复杂的话题,有人知道如何处理 android 中的这种音频捕获异常吗?

这是我的代码设置:

0 投票
2 回答
2250 浏览

ios - 我应该为 iOS 应用程序使用哪种音频文件?

我正在开发一个可以播放多个音频文件的应用程序。我已经让它工作了,没有问题。但我不确定要使用什么文件格式。现在我正在使用.wav 和一个.mp3。有推荐的文件类型吗?我不知道应用程序是如何为 App Store 打包的;音频应该压缩还是未压缩?

谢谢!

0 投票
1 回答
809 浏览

android - AudioFormat 在 android.media.AudioFormat 中不公开

我正在尝试开发像 Shazam 这样的 Android 应用程序。我搜索了 Shazam 在 Google 上的工作方式,我发现这是可以阅读的。如您所见,它首先录制歌曲。但我的录制代码有问题,因为 Android Studio 显示该代码带有红色下划线的错误。

这是我的代码:

用于格式化录音。当我将该代码复制到主要活动中时,它显示错误如下:

在此处输入图像描述

当我将光标悬停在错误上时,它说“AudioFormat 在 android.media.AudioFormat 中不公开。无法从外部包访问”。我该如何解决?我关注的链接中的代码是否错误?我一直在搜索 Android 的教程代码来开发类似 Shazam 应用程序的东西。

为 Andrew Cheong 的回答编辑

我知道为什么因为Cheong的回答,所以我这样使用

但正如您在代码中看到的,我只能找到 setSampleRate() 来设置采样率。我找不到其他方法来设置 sampleSizeInBits、channels、signed 和 bigEndian。我不知道如何设置它们。如何设置其余变量?