Есть ли способ определить, имеет ли аудио файл переменную скорость передачи данных, и извлечь 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 ()
Да я знаю есть это тема, но связано с острым языком
Вы можете мне помочь?
заранее спасибо
Вы должны работать с 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;
}
Других решений пока нет …