QT软件开发: 获取媒体详细信息(视频/音频)
【摘要】
一、环境介绍
操作系统介绍: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)