gpt4 book ai didi

c++ - 为什么我在播放 mp3 歌曲时收到错误提示 : bitstream problem, 重新同步跳过?

转载 作者:太空宇宙 更新时间:2023-11-04 04:15:42 25 4
gpt4 key购买 nike

我收到比特流问题错误。我已经跳过了 512 字节的 id3tag 读取,但我仍然无法在播放某些歌曲时播放所有歌曲

define MP3_SKIP_SIZE  512
fseek(playerDetails->mp3Fp,MP3_SKIP_SIZE,SEEK_SET);

最佳答案

ID3 标签的大小是可变的,不一定是 512 字节。

您可以使用 id3lib找出 ID3 标签的大小:



#include <id3/tag.h>

// Get size of ID3 tags

size_t getID3TagSize(const char* filename)
{
ID3_Tag myTag(filename);

return myTag.Size();
}



#include <lame.h>

void decodeMp3(const char* fileName)
{
size_t mp3TagSize = getID3TagSize(fileName);

f.open(fileName, std::ios::binary);

f.seekg(mp3TagSize); //Skip ID3 tags

std::array<unsigned char, 1024*1024> buffer;

f.read(reinterpret_cast<char*>(&buffer[0]), buffer.size());

auto count = f.gcount();

hip_t lameInput = hip_decode_init();

mp3data_struct mp3data{ 0 };

std::array<short, 1024 * 1024 * 8> pcm_l;
std::array<short, 1024 * 1024 * 8> pcm_r;

int decodeResult = hip_decode_headers(lameInput, &buffer[0], count, &pcm_l[0], &pcm_r[0], &mp3data);


//... Continue decoding ...

}

关于c++ - 为什么我在播放 mp3 歌曲时收到错误提示 : bitstream problem, 重新同步跳过?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52662369/

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