问题标签 [libsndfile]
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.
c - 将原始音频写入文件?
我正在用 C 语言编写一段代码,用于pocketsphinx
将freeswitch
话语(波形或音频)保存到文件中。void *data
我以 a和它的形式接收音频unsigned int len
,我必须将其保存为RAW
(或PCM
)文件(无标题)。我该怎么做呢?
我试过这个:
它不起作用(也许我做得不对?)。我也找到了libvlc
,libsndfile
但还没有找到任何可以为我服务的功能。这里有人有一个简单的例子/教程吗?
我正在研究 C、VS2010、Win8.1 (x64)
pipe - 将原始 PCM 流通过管道传输到 libsndfile
我正在开发一个应用程序,我想将原始 PCM 流从一个应用程序传输到我的应用程序中。我认为需要使用sf_open_virtual函数使用 libsndfile 打开流,但我不太清楚确切的过程。对此的任何帮助将不胜感激!谢谢!
c++ - 使用 sf_open 时,libsndfile 在 512 个字符处截断路径
标题说明了一切。写入具有长路径的文件时,路径会被截断。
任何解决方法的想法?
我正在使用带有 libsndfile.so.1.0.25 的 linux。
c++ - 如何在 sndfile 中写入 24 位 pcm 样本?
我有打开的文件,SF_FORMAT_WAV|SF_FORMAT_FLOAT
但有 24 位格式的样本。Sndfile 文档说调用程序使用的数据类型和文件的数据格式不需要相同,因此使用sf_write_int()
i 可以编写 32 位整数样本和库转换为动态浮点数。但是 24 位呢?我是否将其打包int
,然后使用sf_write_int()
或其他内容编写。
c - 使用 soxr 和 libsndfile 重新采样 PCM 文件数据崩溃
我正在构建一个应用程序,该应用程序需要将任何不是 44100Hz 的输入 PCM 音频文件重新采样为 44.1(或至少尽最大努力这样做)。
为了处理重采样,我使用了 soxr。soxr 没有依赖关系并且是轻量级的,这在这种情况下是理想的,但它不提供本机文件 I/O。我对 C 中的 IO 流的经验非常有限,所以我碰壁了。该应用程序是模块化设计的,因此我需要重新采样过程来创建一个输出文件,然后可以将其传递给其他处理器,而不是简单地直接处理输出流。
为了创建该输出文件,我正在尝试获取soxr
重采样过程生成的数据,并将其传递给libsndfile,它应该能够将音频写入文件。
下面是对我所在位置的极其详细的解释,尽管我不知道它为什么会崩溃。我怀疑这与缓冲区的分配和使用方式有关。(注意:在此代码之前使用 sndfile 读取输入文件)
(这是整个事情的一个要点)
基本重采样器选项
将 sndfile 格式映射为 soxr 格式
设置 soxr IO 规范
穿线
构造重采样器
读取、重采样和写入
我对以下任何代码都不是很有信心,但我对数学进行了三次检查,一切似乎都符合库 API 的期望。
这给出了和 EXC_BAD_ACCESS on soxr_process
。在这一点上,我不知道还有什么可以尝试的。
portaudio - C 语言中带有 Libsndfile、Libsamplerate 和 Portaudio 的 Varispeed
我正在使用 OpenGL、Libsamplerate、portaudio 和 libsndfile 开发 C 语言的音频可视化器。我在整个范例中正确使用 src_process 时遇到了困难。我的目标是使用 src_process 在可视化器中实时实现 Vinyl Like 变速。现在我的实现改变了音频的音高而不改变速度。由于听起来像丢失帧,因此它会产生很多失真,因为当我使用 src_ratio 降低速度时,它听起来几乎像切碎的样本一样颗粒状。任何帮助将不胜感激,我一直在尝试我的缓冲块,但是 10 次中有 9 次我得到一个 libsamplerate 错误,说我的输入和输出数组重叠。我也一直在查看 libsamplerate 附带的速度更改示例,但我找不到哪里出错了。
这是我认为相关的代码。谢谢,如果我能更具体一点,请告诉我,这个学期是我在 C 和编程方面的第一次经历。
c++ - 尝试混合两个 PCM 音频源
我有两个使用 libsndfile 读取的音频文件。
在完成前面的操作后,我采样了 x 个样本:
现在,我想混合这两者。我读到你需要分别得到左右声道,然后总结它们。我试着这样做:
之后,我使用 ffmpeg 对新音频进行编码:
现在,问题是来自 buffer1 的音频在混音中听起来不错,但是当我将混音编码为文件时,唯一“添加”到新音频中的是噪音(就像它是旧的录音一样)。
如果我只将两者中的一个编码到一个文件中,它就可以完美地工作。
我不知道为什么会出错。我想这显然与混合有关,但我不知道我做错了什么。我在这里得到了混合算法,但它没有给我预期的结果。
我还阅读了关于 SO 的其他信息,关于人们有类似问题的信息,但我无法用这些来弄清楚。
c++ - 如何编译 C++ - iOS 上的 libsndfile
ld:警告:忽略文件/Users/vibhavarirajadnya/MyDev/iOS-Projects/Music/POC/ReadWaveFile/ReadWaveFile/libsndfile.a,文件是为存档而构建的,它不是被链接的架构(i386):/Users/vibhavarirajadnya/ MyDev/iOS-Projects/Music/POC/ReadWaveFile/ReadWaveFile/libsndfile.a 架构 i386 的未定义符号:“_sf_close”,引用自:ReadWaveFile.o 中的 SndfileHandle::SNDFILE_ref::~SNDFILE_ref() “_sf_open”,引用自: SndfileHandle::SndfileHandle(char const*, int, int, int, int) in ReadWaveFile.o "_sf_strerror",引用自: SndfileHandle::strError() const in ReadWaveFile.o ld: 未找到体系结构的符号i386 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
我尝试以 3 种方式编译 libsndfile 文件: 1. ./configure 然后通过命令提示符进行 make 和 make install。2. http://ofdsp.blogspot.in/2011/07/installing-libsndfile-with-xcode.html 3. http://en.efreedom.net/Question/1-11576168/Cross-Compile-Libsndfile-Arm -树莓派
使用第一个选项,我得到了上面提到的错误。对于第二个,我收到了大约 69 个错误,其中大部分与 FLAC 有关。使用第三个选项,我得到的结果与 1 相同。它还在命令提示符中给出了一条消息:安装目录:
但是当我检查 Finder 时,没有这样的目录。
有人可以告诉我为 Mac iOSX 编译 libsndfile 及其依赖项的分步方法吗?
c - libao:播放音频块作为sequenze stutters
嘿嘿,
所以我正在尝试用 libao 播放 pcm 音频。我的目标是使播放可暂停和可取消。
由于某种原因,alsa 驱动程序的输出会卡顿并且播放速度非常快。就像您正在清理输出一样。如果我只是播放整个缓冲区,它工作正常。
这是播放循环:
这是准备我的缓冲区的代码。我正在将整个流加载到内存中:
c++ - 使用 portaudio 和 sndfile 播放 wav 文件
我编写了一个函数来使用 portaudio 和 sndfile 播放声音文件。不幸的是,音质很糟糕。声音更像是嘶嘶声。以下是我正在使用的函数的源代码。
我在文章什么是轻量级跨平台WAV播放库?但样本不完整。它似乎只会播放文件的前五秒。我想播放整个文件。
知道我做错了什么吗?
此代码是我的PlaySound项目的一部分。