QT软件开发: 获取媒体详细信息(视频/音频)

举报
DS小龙哥 发表于 2021/12/10 00:09:04 2021/12/10
【摘要】 一、环境介绍 操作系统介绍:win10 64位 QT版本: 5.12.6 编译器:  MinGW32 FFMPEG: 4.2.2 下载地址:  二、软件效果  三、核心代码  3.1 widget.cpp #include "widget.h"#include ...

一、环境介绍

操作系统介绍:win10 64位

QT版本: 5.12.6

编译器:  MinGW32

FFMPEG: 4.2.2

下载地址: 

二、软件效果

 三、核心代码

 3.1 widget.cpp


      #include "widget.h"
      #include "ui_widget.h"
      Widget::Widget(QWidget *parent)
          : QWidget(parent)
          , ui(new Ui::Widget)
      {
          ui->setupUi(this);
          ui->plainTextEdit->setReadOnly(true);
         this->setWindowTitle("获取媒体文件信息(支持拖动文件到窗口里)");
         setAcceptDrops(true);
      }
      Widget::~Widget()
      {
         delete ui;
      }
      /*
      工程: GetMediaInformation
      日期: 2021-07-23
      作者: DS小龙哥
      环境: win10 QT5.12.6 MinGW32
      功能: 选择路径
      */
      void Widget::on_pushButton_select_clicked()
      {
          QString filename=QFileDialog::getOpenFileName(this,"选择打开的文件","C:/",tr("*.*"));
         //filename==选择文件的绝对路径
         LoadName(filename);
      }
      /*
      工程: GetMediaInformation
      日期: 2021-07-23
      作者: DS小龙哥
      环境: win10 QT5.12.6 MinGW32
      功能: 传入媒体名称
      */
      void Widget::LoadName(QString in_file)
      {
         if(!in_file.isEmpty())
          {
              ui->lineEdit_info->setText(in_file);
              QString json=MediainFormation(in_file);
              ui->plainTextEdit->clear();
              ui->plainTextEdit->insertPlainText(json);
          }
      }
      /*
      工程: GetMediaInformation
      日期: 2021-07-23
      作者: DS小龙哥
      环境: win10 QT5.12.6 MinGW32
      功能: 获取媒体信息
      */
      QString Widget::MediainFormation(QString in_file)
      {
          QString ffmpeg_path=QCoreApplication::applicationDirPath();
         //QString strCmd="C:/FFMPEG/ffmpeg_x86_4.2.2/bin/ffprobe.exe -v quiet -of json -i D:/jiyi.mp4 -show_streams";
          ffmpeg_path+="ffmpeg422/";
          QString strCmd=QString("ffmpeg422/ffprobe.exe -v quiet -of json -i \"%1\" -show_streams").arg(in_file);
         qDebug()<<"strCmd:"<<strCmd;
          QProcess process;
        // process.setWorkingDirectory(ffmpeg_path);
         // process.setReadChannel(QProcess::StandardOutput);
          process.start(strCmd);
          process.waitForFinished();
         return process.readAll();
      }
      void Widget::dragEnterEvent(QDragEnterEvent *e)
      {
         if (e->mimeData()->hasUrls())
          {
              e->acceptProposedAction();
          }
      }
      void Widget::dropEvent(QDropEvent *e)
      {
          foreach (const QUrl &url, e->mimeData()->urls())
          {
              QString fileName = url.toLocalFile();
             LoadName(fileName);
          }
      }
  
 

3.2 widget.h 


      #ifndef WIDGET_H
      #define WIDGET_H
      #include <QWidget>
      #include <QFileDialog>
      #include <QProcess>
      #include <QCoreApplication>
      #include <QDebug>
      #include <QDragEnterEvent>
      #include <QUrl>
      #include <QMimeData>
      QT_BEGIN_NAMESPACE
      namespace Ui { class Widget; }
      QT_END_NAMESPACE
      class Widget : public QWidget
      {
          Q_OBJECT
      public:
         Widget(QWidget *parent = nullptr);
          ~Widget();
         QString MediainFormation(QString in_file);
         void LoadName(QString in_file);
      private slots:
         void on_pushButton_select_clicked();
      protected:
         void dragEnterEvent(QDragEnterEvent *e);
         void dropEvent(QDropEvent *e);
      private:
          Ui::Widget *ui;
      };
      #endif // WIDGET_H
  
 

文章来源: xiaolong.blog.csdn.net,作者:DS小龙哥,版权归原作者所有,如需转载,请联系作者。

原文链接:xiaolong.blog.csdn.net/article/details/119026391

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。