2016-09-20 7 views
0

オーディオファイルに可変ビットレートがあるかどうかを判断し、LibTagからsampleCount()を抽出する方法はありますか?私は、Qt QMediaPlayerクラスが可変ビットレートのオーディオファイルの長さを誤って計算するため、オーディオが可変ビットレートを持っているかどうかを発見することが唯一の方法であり、長さをsampleCount()に分割します。TagLib-C++を使用してXingHeaders、VBRIHeaders、およびsampleCountをMP3ファイルから読み取る方法

ドキュメンテーションタグライブラリは少し混乱しているので、)私はちょうどfileref

void MainWindow::playerOnMediaStatusChanged(QMediaPlayer::MediaStatus status) 
{ 
if (status == QMediaPlayer::BufferedMedia) {  
QString mediafile = playlist->currentMedia().canonicalUrl().toString(); 
TagLib::FileRef fr(reinterpret_cast<constwchar_t*>(mediafile.utf16()),true); 
     //… 
    } 
} 

を作成するために管理しかし、私はオーディオは可変ビットレートおよびそのsampleCountを(持っている場合を発見するために行う方法がわかりません

はい、私はこのtopicがある知っているが、

シャープ言語に関連しているあなたは私を助けることができますか? XingHeaderアクセスできるように

おかげで、事前

答えて

0

にあなたはTagLib::MPEG::Fileで作業する必要があります。ここに例があります:

static void printXingHeader(const char *fileName) 
{ 
    TagLib::FileRef ref(fileName); 
    TagLib::MPEG::File *file = dynamic_cast<TagLib::MPEG::File *>(ref.file()); 

    if(!file) 
     return; 

    TagLib::MPEG::Properties *properties = file->audioProperties(); 
    const TagLib::MPEG::XingHeader *xingHeader = properties->xingHeader(); 

    if(!xingHeader) 
     return; 

    std::cout << "total frames: " << xingHeader->totalFrames() 
       << " total size: " << xingHeader->totalSize() 
       << std::endl; 

} 
関連する問題