簡體   English   中英

為什么我會出錯:比特流問題,在播放mp3歌曲時重新同步跳過?

[英]Why am i getting an error hip: bitstream problem, resyncing skipping while playing mp3 songs?

我收到了bitsream問題的錯誤消息。 我已經跳過了id3tag的512個字節的讀取,但是在播放某些歌曲時,我仍然無法播放所有歌曲

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 ...

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM