ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-07-23 11:04:43  阅读:300  来源: 互联网

标签:Widget QT 音频 ui QString file include 详细信息 void


一、环境介绍

操作系统介绍: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

标签:Widget,QT,音频,ui,QString,file,include,详细信息,void
来源: https://blog.csdn.net/xiaolong1126626497/article/details/119026391

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有