【问题标题】:C++ BASS Library - simple mp3 sample playingC++ BASS 库 - 简单的 mp3 示例播放
【发布时间】:2014-09-26 22:21:39
【问题描述】:

我已经检查了 BASS 参考中的解决方案,但我没有找到它。我的音频只是不想播放,是的,我检查了我的扬声器是否正常工作。这是“代码”:

#include "stdafx.h"
#include "D:\\Libraries\BASS\c\bass.h"
#include <iostream>
#include <cstdlib>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{   
    BASS_Init(-1, 44100, 0, 0, NULL);
    BASS_SetVolume(1);
    HSAMPLE sample = BASS_SampleLoad(false, "1.mp3", 0, 0, 1, BASS_SAMPLE_MONO);
    HCHANNEL channel=BASS_SampleGetChannel(sample, FALSE); 
    BASS_ChannelPlay(channel, FALSE); 
    system("pause");
    return 0;
}

我尝试了非常不同的初始化设置等。似乎没有任何效果。 '1.mp3' 文件位于我的“应用程序”的调试文件夹中。提前致谢!

【问题讨论】:

  • 检查每个函数调用的结果。如果有任何失败,那应该告诉你出了什么问题。
  • BASS_Init 返回 'true',因此根据参考它正在工作,然而,事实证明 BASS_SampleLoad 返回 '0'。怎么样?用几个 mp3/wav 文件试了一下,结果都是一样的。
  • 在 BASS_SampleLoad 调用中检查了它是哪个 BASS_ERROR 标志,它说它是 BASS_ERROR_FILEOPEN(无法打开文件)。不明白为什么,寿。参考说它支持我的文件扩展名,音乐通过另一个软播放正常。
  • 当程序运行时,文件所在的位置可能不是工作目录。尝试给出完整路径。
  • 不是这样的。翻了好几遍,改了目录,写了全路径,还是报错。

标签: c++ bass


【解决方案1】:

播放样本必须是void* 类型。像我一样尝试:

//path to file 
string *filePath = new string("/home/user/Qt-Projects/bass/sample.mp3");

函数归约为void*:

const void* getFile(string* file){
    return file->data();
}

然后结束:

streamHandle = BASS_StreamCreateFile(false, getFile(filePath), 0, 0, 0);

【讨论】:

  • 这是不正确的。 documentation page 显示您可以使用文字作为文件名 HSTREAM stream=BASS_StreamCreateFile(FALSE, "afile.mp3", 0, 0, 0);
猜你喜欢
  • 2012-02-16
  • 2021-12-05
  • 2011-11-03
  • 2021-11-27
  • 1970-01-01
  • 2014-11-11
  • 1970-01-01
  • 2012-04-24
相关资源
最近更新 更多