一、環境介紹
作業系統介紹:win10 64位
QT版本: 5.12.6
編譯器: MinGW32
FFMPEG: 4.2.2
下載下傳位址:
二、軟體效果![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CN0gDOlJ2YxQmYjFWO1UDOmFGN0kTN5cDMlVGMmJWY18CX5d2bs92Yl1iclB3bsVmdlR2LcNWaw9CXt92Yu4GZjlGbh5yYjV3Lc9CX6MHc0RHaiojIsJye.png)
1.#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