qt — Как читать XingHeaders, VBRIHeaders и sampleCount из файлов MP3, используя TagLib-Stack Overflow

Есть ли способ определить, имеет ли аудио файл переменную скорость передачи данных, и извлечь sampleCount () через LibTag? Мне нужно выяснить, потому что класс Qt QMediaPlayer неправильно вычисляет продолжительность аудиофайлов с переменной битрейтом, и единственный способ исправить это обнаружить, имеет ли аудио переменную битрейт, и разделить длину для sampleCount () продолжительность.

Так как документация TagLib немного сбивает с толку, мне удалось создать только 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 ()

Да я знаю есть это тема, но связано с острым языком

Вы можете мне помочь?

заранее спасибо

0

Решение

Вы должны работать с TagLib::MPEG::File чтобы иметь доступ к XingHeader, Вот пример:

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;

}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]