我正在开发一个使用JNI的Java项目.JNI调用我自己编写的自定义库,比如mylib.dll,这取决于第三方库libsndfile-1.dll.
当我运行我的程序时,它崩溃了
java.lang.UnsatisfiedLinkError: C:\...path...\mylib.dll: Can't find dependent libraries.
Run Code Online (Sandbox Code Playgroud)
我搜索了这个网站(和其他人),我尝试了一些修复:
我跑了依赖沃克.DW给出了一些警告 - libsndfile,MPR.DLL和SHLWAPI.DLL所需的两个库具有"未解析的导入" - 但DW FAQ表示可以安全地忽略这些警告.
我修复了mylib.dll中的方法名称,如此处所示.方法名称在某种程度上被编译器破坏了,但我添加了链接器标志,现在dll方法名称与我的jni头文件中的名称完全匹配.
我将所有这些DLL放在同一目录中 - 与调用它们的.jar相同的目录 - 以确保它们位于正确的PATH上.
没有骰子.
有谁知道发生了什么事?
我正在使用MacBook pro(通过Parallels)在Visual Studio 2010中进行开发.我正在使用toshiba笔记本电脑在Windows XP上进行测试.
我正在尝试开发一个简单的C应用程序,它可以在WAV文件中的给定时间戳下在特定频率范围内给出0-100的值.
示例:我的频率范围为44.1kHz(典型的MP3文件),我想将该范围分成n个范围(从0开始).然后我需要得到每个范围的幅度,从0到100.
到目前为止我管理的内容:
使用libsndfile我现在能够读取WAV文件的数据.
infile = sf_open(argv [1], SFM_READ, &sfinfo);
float samples[sfinfo.frames];
sf_read_float(infile, samples, 1);
Run Code Online (Sandbox Code Playgroud)
但是,我对FFT的理解相当有限.但我知道为了使振幅达到我需要的范围是必需的.但是我该如何继续前进呢?我找到了FFTW-3库,它似乎适用于此目的.
我在这里找到了一些帮助:https://stackoverflow.com/a/4371627/1141483
并在这里查看了FFTW教程:http://www.fftw.org/fftw2_doc/fftw_2.html
但由于我不确定FFTW的行为,我不知道从这里开始.
另一个问题,假设您使用libsndfile:如果强制读取单引导(使用立体声文件)然后读取样本.那么你真的只会阅读总文件的一半样本吗?其中一半来自频道1,还是自动过滤出来?
非常感谢您的帮助.
编辑:我的代码可以在这里看到:
double blackman_harris(int n, int N){
double a0, a1, a2, a3, seg1, seg2, seg3, w_n;
a0 = 0.35875;
a1 = 0.48829;
a2 = 0.14128;
a3 = 0.01168;
seg1 = a1 * (double) cos( ((double) 2 * (double) M_PI * (double) n) / ((double) N - (double) 1) );
seg2 = a2 * (double) cos( …
Run Code Online (Sandbox Code Playgroud) 可以在iPhone操作系统上使用Libsndfile C库吗?如果是这样,我是否需要"包含"它,或者它是否更复杂.
谢谢!
我正在尝试安装"libsndfile-dev".我做以下事情:
sudo apt-get install libsndfile-dev
Run Code Online (Sandbox Code Playgroud)
结果我得到以下结果:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package libsndfile-dev is a virtual package provided by:
libsndfile1-dev 1.0.17-4ubuntu0.8.10.2
You should explicitly select one to install.
E: Package libsndfile-dev has no installation candidate
Run Code Online (Sandbox Code Playgroud)
所以,我的安装尝试失败了.任何人都可以告诉我应该明确选择什么,我该怎么做?
先感谢您.
试图在Mac上安装scikits.audiolab-0.11.0,它需要libsndfile:http://www.mega-nerd.com/libsndfile/.我确实使用libsndfile_python-1.0.0-py2.7-macosx10.5.mpkg安装了libsndfile,但是audiolab设置错误:找不到libsndfile库.audiolab安装程序的错误如下.它表明libsndfile的位置可以在site.cfg中指定.
我对这些类型的安装缺乏经验是妨碍了解这一点.任何人都可以就如何完成这项工作提出一些建议吗?或者回答下面的问题?
顺便说一下,我检查了我的/ usr/lib目录并且没有libsndfile.我认为默认情况下,audiolab设置会查找文件.
感谢阅读和任何帮助.
audiolab安装程序出错:
numpy.distutils.system_info.NotFoundError: sndfile (http://www.mega-nerd.com/libsndfile/) library not found.
Directories to search for the libraries can be specified in the
site.cfg file, in section [sndfile].
Run Code Online (Sandbox Code Playgroud) 我正在将一个小型(<10 个类)C++ 项目移植到 Java。该项目操作声音文件,在 C++ 中使用libsndfile 来完成此操作。该代码包括以下内容:
const int channels = audioFileInfo.channels;
...
sf_readf_double( audioFile, inputBuffer, MAX_ECHO );
...
sf_writef_double( outputAudioFile, ¤tAudioBuffer[WINDOW_SIZE * channels], SEGMENTATION_LENGTH );
Run Code Online (Sandbox Code Playgroud)
在 Java 中,在低级别操作声音文件的最佳方法是什么?我说的是标准化、添加回声等内容。
进度报告
经过一番挖掘,我找到了javax.sound.sampled,看起来它可以完成这项工作。
编辑 2仔细检查后,它不会工作(或至少不会以任何可用的方式),因为它依赖于com.sun.sound
包。
编辑 3在更多的检查和实验中,com.sun.sound
和sun.misc
包是在 GNU GPLv2 下发布的,我已经将它们下载到我的项目中。重命名javax.sound.sampled
为 后imp.javax.sound.sampled
,项目编译,我可以创建AudioFileFormat
对象而不会抛出任何异常。我还没有机会玩太多,但我会及时通知你。
编辑 4好的,有些东西似乎适用于 javax.sound.sampled,有些则不能。例如,这样的调用:
AudioInputStream stream = AudioSystem.getAudioInputStream(waveFile));
Run Code Online (Sandbox Code Playgroud)
不起作用,但是我可以通过执行以下操作来解决此问题:
WaveFileReader wfr = new WaveFileReader();
AudioInputStream stream = wfr.getAudioInputStream(waveFile);
Run Code Online (Sandbox Code Playgroud)
通常,调用诸如AudioSystem.getAudioFileTypes()
返回空列表之类的东西。我可以深入研究软件包,发现它与提供商有关,但我不知道如何解决这个问题。得到我的stream
对象后,它确实正确报告了它的编码等,这令人鼓舞。 …
我想写一个VPI/PLI接口,它将打开音频文件(即wav,aiff等)并将数据呈现给Verilog模拟器.我目前正在使用Icarus,并希望使用libsndfile来处理输入文件格式和数据类型转换.
我不太清楚在C代码中使用什么...已经看过IEEE 1364-2001并且仍然混淆了我应该使用哪些函数.
理想情况下,我想要一个带有数据端口(串行或并行),时钟输入和启动/停止引脚的verilog模块.我想实现两个模块,一个用于从文件中回放,另一个用于记录测试中的过滤器的输出.
我可以在C中完成所有操作,只需在我的测试平台中实例化模块,或者我必须编写一个函数(比如说$read_audio_data
)和包装器模块在每个时钟脉冲上调用它吗?
嗯,或者可能是我需要创建模块然后获取它的句柄并以某种方式将值/ vect传递给句柄?
我不太关心如何设置文件名,因为我可能不会从verilog代码中做到这一点.我可能暂时坚持使用24位整数样本,并且
libsndfile
应该很好地处理转换.也许,我现在会坚持连续(甚至可能以类似I2S的方式)并在需要时在Verilog中对其进行反序列化.
此外,我看过Icarus 插件,它实现了一个读取PNG文件的摄像机,尽管图像处理有很多方面,但还有音频.因此,目前代码看起来有点过于复杂 - 我没有设法让它运行.
我正在尝试在运行os x 10.9.1的mac上安装libsndfile.但是,在运行命令'make'之后,它会运行一段时间,然后显示以下消息:sndfile-play.c:61:11: fatal error: 'Carbon.h' file not found.
我没有太多运气找到有类似问题的人.从我发现它看起来可能与不受支持的较新的OS版本有关.有谁知道如何解决这个问题?提前致谢!
我在 Windows 10 Pro 计算机上使用 Docker(Linux 容器)。我创建了一个 docker 容器来运行我的 Flask 应用程序,并在 requests.txt 文件中提到了所需的库。
当我运行 docker 容器时,我收到以下消息
OSError:ctypes.util.find_library()无法找到名为“sndfile”的库。
如何在 Docker 中安装 sndfile 库?
参考链接:https://pysoundfile.readthedocs.io/en/0.9.0/ 我尝试在 Dockerfile 中使用以下命令安装 libsndfile
---- RUN apt-get install libsndfile1
Got Below message from docker build:
Step 5/7 : RUN apt-get install libsndfile1
---> Running in <container>
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package libsndfile1
The command '/bin/sh -c apt-get install libsndfile1' returned a non-zero code: 100
Run Code Online (Sandbox Code Playgroud)
1.Docker版本:
Client:
Version: …
Run Code Online (Sandbox Code Playgroud) 更新到R 3.2.0时,我不得不重新安装seewave
.
我设法安装所需的软件包fftw
,tuneR
,rgl
,和rpanel
.
但是,在尝试编译时,seewave
我收到了消息:
stft.c:3:11: fatal error: 'sndfile.h' file not found
Run Code Online (Sandbox Code Playgroud)