首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Qt phonon获取视频元数据?

如何使用Qt phonon获取视频元数据?
EN

Stack Overflow用户
提问于 2012-03-03 16:36:39
回答 2查看 1.6K关注 0票数 2

我想得到视频的码率。我使用Qt声子来实现这个目标。由于有一个名为Phonon::MediaObject的类,并提供了一个名为metaData()的方法,因此我使用了该方法,但结果显示为零。这是我的代码,我想知道为什么和如何获得的元数据,如比特率在qt与Phonon

代码语言:javascript
运行
复制
    QString source="E:\\sh.mp4";
    Phonon::MediaObject media;
    media.setCurrentSource(Phonon::MediaSource(source));
    QMap <QString, QString> metaData = media.metaData();
    int trackBitrate = metaData.value("bitrate").toInt();
    qDebug()<<trackBitrate;

结果始终为0

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-18 00:14:07

我自己才弄明白的。

视频文件中的

  1. 元数据不包含比特率。它只包含对播放没有任何影响的媒体的额外信息。因此,即使Phonon::MediaObject::metaData()在不加载视频的情况下工作,它也不会对你有帮助。
  2. I最终使用了libformat,这是ffmpeg库的一部分来获得比特率。这是代码。

如果你复制并粘贴它,它应该可以工作。

在这里下载FFMpeg:http://dranger.com/ffmpeg/tutorial01.html第一个教程将告诉你如何链接:http://dranger.com/ffmpeg/tutorial01.html

代码语言:javascript
运行
复制
#include <QString>
#include <QMultiMap>

#include <stdio.h>

#include <libavformat/avformat.h>
#include <libavutil/dict.h>

void processMedia(const char* mediaFile)
{
  AVFormatContext *pFormatCtx = NULL;
  AVDictionaryEntry *tag = NULL;

  // Register all formats and codecs
  av_register_all();

  // Open video file
  if(avformat_open_input(&pFormatCtx, mediaFile, NULL, NULL)!=0)
    return;

  // Retrieve stream information
  if(av_find_stream_info(pFormatCtx)<0)
    return;

  //Get Bitrate
  float bitRate = pFormatCtx->bit_rate;

  //Get Meta
  QMultiMap<QString, QString> metaData;
  while ((tag = av_dict_get(pFormatCtx->metadata, "", tag,
          AV_DICT_IGNORE_SUFFIX)))
  {
    QString keyString(tag->key);
    QString valueString(tag->value);
    metaData.insert(keyString, valueString);
    printf("%s=%s\n", tag->key, tag->value);
  }

  // Close the video file
  av_close_input_file(pFormatCtx);
}
票数 2
EN

Stack Overflow用户

发布于 2012-03-03 17:05:39

设置数据源时,MediaObject将进入LoadingState。在这一点上,元数据可能还不可用。

当元数据准备就绪时,该对象会发出metaDataChanged信号。您应该对该信号做出反应,并仅在元数据发出后才尝试访问元数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9544699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档