gpt4 book ai didi

c++ - 是否有任何 LAME C++ 包装器\简化器(在 Linux Mac 和纯代码 Win 上工作)?

转载 作者:IT老高 更新时间:2023-10-28 23:22:22 26 4
gpt4 key购买 nike

我想创建简单的 pcm 到 mp3 C++ 项目。我希望它使用 LAME。我喜欢 LAME,但它真的很大。所以我需要某种开源代码,使用纯代码工作流简化器。可以这么说,我给它一个带有 PCM 和 DEST 文件的文件。调用类似:

LameSimple.ToMP3(PCM文件, MP3文件, 44100, 16, MP3, VBR);

在 4 到 5 行中找到这样的东西(当然应该有例子),我有我需要的东西它应该是轻量级的、简单的、强大的、开源的、跨平台的。

有这样的吗?

最佳答案

Lame 确实不难使用,虽然有很多可选的配置功能,如果你需要的话。对一个文件进行编码需要略多于 4-5 行,但也不会更多。这是我拼凑的一个工作示例(只是基本功能,没有错误检查):

#include <stdio.h>
#include <lame/lame.h>

int main(void)
{
int read, write;

FILE *pcm = fopen("file.pcm", "rb");
FILE *mp3 = fopen("file.mp3", "wb");

const int PCM_SIZE = 8192;
const int MP3_SIZE = 8192;

short int pcm_buffer[PCM_SIZE*2];
unsigned char mp3_buffer[MP3_SIZE];

lame_t lame = lame_init();
lame_set_in_samplerate(lame, 44100);
lame_set_VBR(lame, vbr_default);
lame_init_params(lame);

do {
read = fread(pcm_buffer, 2*sizeof(short int), PCM_SIZE, pcm);
if (read == 0)
write = lame_encode_flush(lame, mp3_buffer, MP3_SIZE);
else
write = lame_encode_buffer_interleaved(lame, pcm_buffer, read, mp3_buffer, MP3_SIZE);
fwrite(mp3_buffer, write, 1, mp3);
} while (read != 0);

lame_close(lame);
fclose(mp3);
fclose(pcm);

return 0;
}

关于c++ - 是否有任何 LAME C++ 包装器\简化器(在 Linux Mac 和纯代码 Win 上工作)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2495420/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com