首页 > 解决方案 > 从 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:

在此处输入图像描述

在此处输入图像描述

标签: c++iosxcode

解决方案


推荐阅读