首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >QT软件开发: 获取媒体详细信息(视频/音频)

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

作者头像
DS小龙哥
发布2022-01-12 10:26:21
发布2022-01-12 10:26:21
1.5K0
举报

一、环境介绍

操作系统介绍:win10 64位

QT版本: 5.12.6

编译器: MinGW32

FFMPEG: 4.2.2

二、软件效果

三、核心代码

3.1 widget.cpp

代码语言:javascript
复制
#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

代码语言:javascript
复制
#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
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/07/23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、环境介绍
  • 二、软件效果
  • 三、核心代码
    • 3.1 widget.cpp
    • 3.2 widget.h
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档