标签: libsndfile

如何在JNI项目中修复UnsatisfiedLinkError(无法找到依赖库)

我正在开发一个使用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)

我搜索了这个网站(和其他人),我尝试了一些修复:

  1. 我跑了依赖沃克.DW给出了一些警告 - libsndfile,MPR.DLL和SHLWAPI.DLL所需的两个库具有"未解析的导入" - 但DW FAQ表示可以安全地忽略这些警告.

  2. 我修复了mylib.dll中的方法名称,如此处所示.方法名称在某种程度上被编译器破坏了,但我添加了链接器标志,现在dll方法名称与我的jni头文件中的名称完全匹配.

  3. 我将所有这些DLL放在同一目录中 - 与调用它们的.jar相同的目录 - 以确保它们位于正确的PATH上.

没有骰子.

有谁知道发生了什么事?

我正在使用MacBook pro(通过Parallels)在Visual Studio 2010中进行开发.我正在使用toshiba笔记本电脑在Windows XP上进行测试.

java java-native-interface windows-xp libsndfile

79
推荐指数
7
解决办法
30万
查看次数

WAV文件分析C(libsndfile,fftw3)

我正在尝试开发一个简单的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)

c fft wav libsndfile fftw

10
推荐指数
1
解决办法
7970
查看次数

可以在iPhone iOS上使用Libsndfile库吗?

可以在iPhone操作系统上使用Libsndfile C库吗?如果是这样,我是否需要"包含"它,或者它是否更复杂.

谢谢!

c audio libsndfile ios

7
推荐指数
1
解决办法
2902
查看次数

包libsndfile-dev没有安装候选者

我正在尝试安装"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)

所以,我的安装尝试失败了.任何人都可以告诉我应该明确选择什么,我该怎么做?

先感谢您.

linux ubuntu install apt-get libsndfile

6
推荐指数
1
解决办法
8197
查看次数

Python audiolab安装,无法在Mac OSX上安装(或查找)libsndfile

试图在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中指定.

我对这些类型的安装缺乏经验是妨碍了解这一点.任何人都可以就如何完成这项工作提出一些建议吗?或者回答下面的问题?

  • 如果安装了libsndfile,它会在哪里,所以我可以指定位置?否则如何正确安装?
  • 什么是site.cfg文件?我在下载的scikits.audiolab-0.11.0文件夹中看到了site.cfg.bdist_wininst和site.cfg.win32.
  • 是什么意思"在[sndfile]部分的site.cfg文件中指定"(参见下面的错误).这是否意味着我应该用括号之间的/ path/to/libsndfile替换"sndfile"这个词?

顺便说一下,我检查了我的/ 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)

python audio libsndfile

6
推荐指数
2
解决办法
9021
查看次数

移植用 libsndfile 编写的 C++ 代码时,我应该在 Android 中使用什么?

我正在将一个小型(<10 个类)C++ 项目移植到 Java。该项目操作声音文件,在 C++ 中使用libsndfile 来完成此操作。该代码包括以下内容:

const int channels = audioFileInfo.channels;
...
sf_readf_double( audioFile, inputBuffer, MAX_ECHO );
...
sf_writef_double( outputAudioFile, &currentAudioBuffer[WINDOW_SIZE * channels], SEGMENTATION_LENGTH );
Run Code Online (Sandbox Code Playgroud)

在 Java 中,在低级别操作声音文件的最佳方法是什么?我说的是标准化、添加回声等内容。

进度报告

经过一番挖掘,我找到了javax.sound.sampled,看起来它可以完成这项工作。

编辑 2仔细检查后,它不会工作(或至少不会以任何可用的方式),因为它依赖于com.sun.sound包。

编辑 3在更多的检查和实验中,com.sun.soundsun.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对象后,它确实正确报告了它的编码等,这令人鼓舞。 …

c++ java android porting libsndfile

5
推荐指数
1
解决办法
915
查看次数

简单的Verilog VPI模块,用于打开音频文件

我想写一个VPI/PLI接口,它将打开音频文件(即wav,aiff等)并将数据呈现给Verilog模拟器.我目前正在使用Icarus,并希望使用libsndfile来处理输入文件格式和数据类型转换.

我不太清楚在C代码中使用什么...已经看过IEEE 1364-2001并且仍然混淆了我应该使用哪些函数.

理想情况下,我想要一个带有数据端口(串行或并行),时钟输入和启动/停止引脚的verilog模块.我想实现两个模块,一个用于从文件中回放,另一个用于记录测试中的过滤器的输出.

我可以在C中完成所有操作,只需在我的测试平台中实例化模块,或者我必须编写一个函数(比如说$read_audio_data)和包装器模块在每个时钟脉冲上调用它吗?

嗯,或者可能是我需要创建模块然后获取它的句柄并以某种方式将值/ vect传递给句柄?

我不太关心如何设置文件名,因为我可能不会从verilog代码中做到这一点.我可能暂时坚持使用24位整数样本,并且 libsndfile应该很好地处理转换.也许,我现在会坚持连续(甚至可能以类似I2S的方式)并在需要时在Verilog中对其进行反序列化.

此外,我看过Icarus 插件,它实现了一个读取PNG文件的摄像机,尽管图像处理有很多方面,但还有音频.因此,目前代码看起来有点过于复杂 - 我没有设法让它运行.

audio verilog signal-processing libsndfile icarus

5
推荐指数
1
解决办法
2651
查看次数

在OS X Mavericks上安装libsndfile时出现致命错误

我正在尝试在运行os x 10.9.1的mac上安装libsndfile.但是,在运行命令'make'之后,它会运行一段时间,然后显示以下消息:sndfile-play.c:61:11: fatal error: 'Carbon.h' file not found.我没有太多运气找到有类似问题的人.从我发现它看起来可能与不受支持的较新的OS版本有关.有谁知道如何解决这个问题?提前致谢!

c libsndfile

5
推荐指数
2
解决办法
4245
查看次数

在 docker 中:OSError: ctypes.util.find_library() 未能找到名为“sndfile”的库

我在 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)

libsndfile docker

5
推荐指数
1
解决办法
7280
查看次数

'seewave'安装错误"'找不到'sndfile.h'文件"(对于OSX Yosemite下的R 3.2.0)

更新到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)

r libsndfile osx-yosemite

4
推荐指数
1
解决办法
3803
查看次数