问题标签 [sample-rate]

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

iphone - OS X / iOS - 使用 AudioConverterFillComplexBuffer 对缓冲区进行采样率转换

我正在为一个名为 XAL 的音频库编写 CoreAudio 后端。输入缓冲器可以有不同的采样率。我正在使用单个音频单元进行输出。想法是在将缓冲区发送到音频单元之前转换缓冲区并混合它们。

只要输入缓冲区具有与输出音频单元相同的属性(采样率、通道数等),一切都可以正常工作。因此,混合部分起作用。

但是,我坚持采样率和通道数转换。据我所知,这是使用音频转换器服务 API 最容易做到的。我设法构建了一个转换器;这个想法是输出格式与输出单元格式相同,但可能会根据转换器的目的进行调整。

音频转换器构建成功,但在调用时AudioConverterFillComplexBuffer(),我得到输出状态错误-50。

如果我能在这段代码上获得另一组眼球,我会很高兴。问题可能在下面的某个地方AudioConverterNew()。变量stream包含传入(和传出)缓冲区数据,并streamSize包含传入(和传出)缓冲区数据的字节大小。

我做错什么了?

0 投票
1 回答
82 浏览

iphone - 录制的语音笔记会减慢应用程序的速度

在我的 iPhone 应用程序中,我正在录制用户的声音并将其保存在设备中。我的 AVAudioRecorder 设置如下:

如果我保存更多的声音,应用程序会变得越来越慢。我一直保持低采样率来解决这个目的,但即使这样也没有唤醒。我该怎么办?

0 投票
1 回答
6735 浏览

android - 如何在 linux/android 平台上设置高于 44.1kHz 的音频采样率?

我注意到android.media.AudioRecord使用错误时无法正常工作sampleRateInHz

复制

您还可以使用 Samsung Nexus S(由 Google 提供)上的 pcmrecorder 轻松重现该问题:

https://market.android.com/details?id=com.kohei.android.pcmrecorder

http://ko-yasui.com/home/pcmrecorder/

所以它无法以 48Khz 录制,而硬件音频芯片支持高达 96KHz:

http://www.wolfsonmicro.com/products/audio_hubs/WM8994/

这是设备/固件错误还是已知限制?

注意android平台只保证44100Hz左右(连24KHz也不行)

http://developer.android.com/reference/android/media/AudioRecord.html

sampleRateInHz:以赫兹表示的采样率。44100Hz 是目前唯一保证适用于所有设备的速率,但其他速率(例如 22050、16000 和 11025)可能适用于某些设备。

源代码

您可以在以下位置找到重现这些问题的示例代码:

https://github.com/rzr/rzr-android-test/blob/api-android-media/src/fr/online/rzr/test/

曲目

如何克服这个限制?

  • 可以使用任何其他 API 吗?开放式,阿尔萨,开放式?如何 ?

  • 可以从用户端重新配置 alsa 驱动程序以能够在 44100Hz 以上采样吗?( .asoundrc )

  • 是否可以在不重新刷新/生根/重启设备的情况下做这样的事情

  • 否则如何解决这个问题?使用本机代码有效地进行上采样(插值)?

更多的

http://www.anddev.org/multimedia-problems-f28/how-to-set-audio-sampling-rate-higher-than-44-1hz-nexuss-t54722.html

http://en.androidwiki.com/wiki/Nexus_S

0 投票
2 回答
526 浏览

php - 如何扫描实时 mp3 流的采样率?

我是 FFMPEG 的新手,我想扫描我所有的文件以获取采样率。我不确定这是什么,因为我是新手,甚至不知道如何开始使用 FFMPEG 的扫描。这些直播流是 mp3 流、音乐曲目。如果这有什么不同,我对 PHP 很熟悉。

0 投票
9 回答
1712 浏览

delphi - 用于音频数据采样率转换的库?

什么是用于音频数据采样率转换的好的 Delphi 库?我不介意花钱买东西。

我需要实时上采样和下载示例音频。我了解理论,但不想编写自己的例程。

编辑:有 Mac 支持的东西的奖励积分。

0 投票
1 回答
669 浏览

c++ - 组合 2 个 wav 文件后得到的 wav 的采样率

我在 VS2010 中手动执行以下操作。1. 读入 2 个波形文件,比如“1.wav”和“2.wav”。2. 将 2.wav 插入 1.wav 的中间。3. 将结果波形流写入输出文件“out.wav”。

我现在可以使用以下结构成功读取波形文件

但是2个wave文件的一些参数不一样。比如1.wav的SampleRate是8000,2.wav的SampleRate是44100,那么out.wav的SampleRate是多少?

0 投票
0 回答
296 浏览

c# - 以音频采样率引发实时事件

我正在使用 C# .Net 实时进行一些音频合成。

我有一个 VCO 类,可以在读取输出波形时更新它的输出波形。为了播放声音,我想将它输入 DirectSound 二级缓冲区。我一直在使用未实时填充的字节数组来进行此操作。

但是,为了实时播放我的 VCO,我假设我需要以与为直接声音对象指定的采样率相同的速率读取输出。

有没有办法可以让定时器或回调类型函数以 1/采样率引发事件,以便实时 vco 输出可以与直接声音采样率匹配?

我想我可以有一个循环并询问 StopWatch.Ticks,但是有没有一种更简洁的方法可以自动引发事件,而两者之间没有处理器负载?

0 投票
1 回答
3454 浏览

compression - 如何使用 sox 压缩 mp3?

我想用 sox 减小一些 mp3 音频的文件大小。我想我可以将立体声减少到只有 1 个通道(即单声道),降低采样率并降低位深度。我发现似乎 sox 什么都做不了。这是真的还是我做对了?

0 投票
0 回答
921 浏览

audio - 精确的 mp4 帧速率(同步问题)

我正在编写一个音频扩展器来将音频从 24p 转换为 PAL 视频。24p 是 24000 / 1001 ~= 23.976 fps PAL 正好是 25 fps。

我使用的算法非常简单。如果“m”是输出样本数,“n”是输入样本数,则 m = floor(f(n + 0.5)),其中 f 是速度因子。在这种情况下 f = 25 / (24000 / 1001) = 1001 / 960 。是的,我基本上每 30 个左右的样本丢弃一次样本,但音频应该是同步的,而且你会听到大约 2kHz 的振铃。

但是,在生成的视频中,我在电影 1.5 小时后的 0.1 - 0.3 秒内可能失去了 a/v 同步。

我尝试通过使用长双精度而不是双精度来提高计算精度,但我得到了相同的音频偏移量。无论如何,只要你有 >9 sig figs,这不应该是一个因素,因为在 48kHz 采样的 2 小时电影中有 345 600 000 个样本。

我不认为我错过了一些神奇的同步数据,因为当我将原始视频拆分为视频和 wav 文件并将它们一起播放时,它们完全保持同步。

我意识到媒体容器/流可能不会将帧速率存储为有理数,即 24000 / 1001 ,(如果我错了,请纠正我!)他们会使用小数。如果是这样,我的加速因子不正确。

我尝试从各种播放器获取 fps:ffmpeg 23.98、vlc 23.976023。但我真的需要知道原始视频的确切帧率。从外观上看,它需要小数点后 5 位(0.2s / 2hrs)。我尝试插入 vlc 的 fps,但我仍然有点出局。

总而言之,有没有办法从 mp4 文件中提取准确的帧率?

或者我在这里错过了一些东西,比如让流保持同步的交错。

(代码在这里https://raw.github.com/rhlee/speed-alpha/22c28ddcb357649efd3dedd099e159ff024657fe/speed.c如果有人感兴趣的话。)

0 投票
1 回答
4212 浏览

c - 使用 libsndfile 和 libsamplerate 的音频采样率转换器。不确定是否正确使用函数 src_simple

我一直在使用 libsndfile 和 libsamplerate 在 c 中构建一个简单的采样率转换器。无论我尝试什么,我似乎都无法让 libsamplerate 的 src_simple 函数工作。我已经将我的代码剥离得尽可能简单,现在它只输出一个相同采样率的无声音频文件:

这真的开始让我感到压力了。该计划是一个单人项目,很快就要到期了,这让我非常焦虑,因为无论我尝试什么似乎都会导致失败。谁能帮帮我吗?