【C++】音频格式解析库使用(wav、ogg、flac、mp3)

音频格式解析库使用

一、前言

        在需要播放音频时,需要一个通用的、跨平台的方案。我这里采用的是OpenAL+主流音频格式解析。本篇文章主要讲述wav、ogg、flac、minimp3的使用,其中wav未使用第三方库。

        我的完整代码仓库:dl/system/dl_audio_loader.h · 略游/dl - 码云 - 开源中国

二、环境准备

        ogg库、flac库:Xiph.org: Downloads

需要下载 libogg和 libvorbis。需要下载 libflac。

        minimp3:GitHub - lieff/minimp3: Minimalistic MP3 decoder single header library

需要 minimp3.h和 minimp3_ex.h两个头文件。

三、接口封装

        定义AudioLoader类,用于命名分类。PCM为音频引擎需要的数据(例如OpenAL、XAudio2等)。WAVEFormat为wav格式需要的定义。

/**
* @file		dl_audio_loader.h
* @brief	加载音频文件
*
*
* @version	1.0
* @author	lveyou
* @date		22-08-26
*
* @note		支持格式:wav、ogg、flac、mp3
*/
#pragma once

#ifndef DL_DISABLE_AUDIO
#include <string>
#include "memory/dl_buffer.h"

namespace dl
{

class AudioLoader
{
public:
	struct PCM
	{
		int _numChannel;//通道数 1,2 AL_FORMAT_MONO8,AL_FORMAT_STEREO8
		int _bitPerSample;//采样数 8,16 
		Buffer _buf;
		size_t _freq;//采样率
	}; 
	static bool ReadWav(std::string_view path_name, PCM& pcm);
	static bool ReadOgg(std::string_view path_name, PCM& pcm);
	static bool ReadFlac(std::string_view path_name, PCM& pcm);
	static bool ReadMp3(std::string_view path_name, P
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值