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)