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

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

一、环境介绍

操作系统介绍:win10 64位

QT版本: 5.12.6

编译器:  MinGW32

FFMPEG: 4.2.2

下载地址:

二、软件效果

image.png

image.png

 三、核心代码

3.1 widget.cpp

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
目录
相关文章
|
6月前
|
Web App开发 编解码 安全
视频会议技术 入门探究:WebRTC、Qt与FFmpeg在视频编解码中的应用
视频会议技术 入门探究:WebRTC、Qt与FFmpeg在视频编解码中的应用
630 4
|
6月前
|
监控 前端开发 JavaScript
Qt Quick调试之道:跟踪、输出与打印信息的全面攻略
Qt Quick调试之道:跟踪、输出与打印信息的全面攻略
314 0
|
存储 编译器 数据库
[笔记]OpenCV+FFmpeg+Qt实现视频编辑器之OpenCV核心类型 Mat
[笔记]OpenCV+FFmpeg+Qt实现视频编辑器之OpenCV核心类型 Mat
115 1
|
编译器
Qt获取当前所用的Qt版本、编译器、位数等信息
Qt获取当前所用的Qt版本、编译器、位数等信息
|
3月前
【qt】如何读取文件并拆分信息?
【qt】如何读取文件并拆分信息?
33 0
|
3月前
|
网络协议
【qt】TCP客户端信息的接受和发送
【qt】TCP客户端信息的接受和发送
34 0
|
3月前
|
网络协议
【qt】TCP 服务端怎么收到信息?
【qt】TCP 服务端怎么收到信息?
39 0
|
3月前
|
数据安全/隐私保护
【qt】获取主机信息系统
【qt】获取主机信息系统
17 0
|
3月前
|
容器
【qt】如何获取网卡的信息?
【qt】如何获取网卡的信息?
46 0
|
5月前
|
存储 编解码 Ubuntu
【QT】linux下alsa库的移植和QT中音视频的处理&笔记
【QT】linux下alsa库的移植和QT中音视频的处理&笔记

推荐镜像

更多