c++ - 从 C++ Xcode 访问 .wav 文件
问题描述
我正在尝试从我的 iOS Xcode 项目中的 .cpp 文件中读取一个 .wav 文件。我已经搜索过,但我找不到为什么它读得不好的答案。我放入了所有可能的目录,但仍然无法正常工作。这是调用 .wav 文件的代码:
#define EXPORT __attribute__((visibility("default")))
EXPORT
string getAudioWmark()
{
std::string result;
result = get_watermark("piano2.wav", "");
return (result.c_str());
}
get_watermark 方法(来自 wget.cc):
std::string get_watermark (const string& infile, const string& orig_pattern)
{
std::string patterns;
WavData wav_data;
Error err = wav_data.load (infile);
if (err)
{
error ("audiowmark: error loading %s: %s\n", infile.c_str(), err.message());
return "1";
}
if (Params::test_truncate)
{
const size_t want_n_samples = wav_data.sample_rate() * wav_data.n_channels() * Params::test_truncate;
vector<float> short_samples = wav_data.samples();
if (want_n_samples < short_samples.size())
{
short_samples.resize (want_n_samples);
wav_data.set_samples (short_samples);
}
}
int result;
if (wav_data.sample_rate() == Params::mark_sample_rate)
{
result = decode_and_report (wav_data, orig_pattern);
if (PatternStorage::getInstance().getPatterns() != "") {
patterns = PatternStorage::getInstance().getPatterns();
}
return patterns;
}
else
{
result = decode_and_report (resample (wav_data, Params::mark_sample_rate), orig_pattern);
if (PatternStorage::getInstance().getPatterns() != "") {
patterns = PatternStorage::getInstance().getPatterns();
}
return patterns;
}
}
这是我的 Xcode 项目中的目录(上面的代码来自 native-lib.cpp:
解决方案
推荐阅读
- macos - 可以使用在 64 位 macOS 上运行的 carbon api
- c++ - 如何编写自定义删除器来处理前向声明的类型
- node.js - 节点猫鼬更新两个集合
- c# - 用户控件在运行时未添加到 TableLayoutPanel
- c# - 如何使用 C# 中的“System.Runtime.Serialization.Json”类反序列化带有字符串数组的 JSON?
- c# - RegEx 不适用于 DocuSign 进行文本验证
- ios - 不变的违规文本字符串必须在
零件 - windows - 有人可以建议为什么从源代码(1.4)构建的 Go 由于 GCC 编译错误而失败,即使 CGO_ENABLED=0
- html - 内容和页脚之间的空间
- java - Spring State Machine - 为什么文档使用静态类