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

举报
DS小龙哥 发表于 2021/12/10 00:09:04 2021/12/10
【摘要】 一、环境介绍 操作系统介绍: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


  
  1. #include "widget.h"
  2. #include "ui_widget.h"
  3. Widget::Widget(QWidget *parent)
  4. : QWidget(parent)
  5. , ui(new Ui::Widget)
  6. {
  7. ui->setupUi(this);
  8. ui->plainTextEdit->setReadOnly(true);
  9. this->setWindowTitle("获取媒体文件信息(支持拖动文件到窗口里)");
  10. setAcceptDrops(true);
  11. }
  12. Widget::~Widget()
  13. {
  14. delete ui;
  15. }
  16. /*
  17. 工程: GetMediaInformation
  18. 日期: 2021-07-23
  19. 作者: DS小龙哥
  20. 环境: win10 QT5.12.6 MinGW32
  21. 功能: 选择路径
  22. */
  23. void Widget::on_pushButton_select_clicked()
  24. {
  25. QString filename=QFileDialog::getOpenFileName(this,"选择打开的文件","C:/",tr("*.*"));
  26. //filename==选择文件的绝对路径
  27. LoadName(filename);
  28. }
  29. /*
  30. 工程: GetMediaInformation
  31. 日期: 2021-07-23
  32. 作者: DS小龙哥
  33. 环境: win10 QT5.12.6 MinGW32
  34. 功能: 传入媒体名称
  35. */
  36. void Widget::LoadName(QString in_file)
  37. {
  38. if(!in_file.isEmpty())
  39. {
  40. ui->lineEdit_info->setText(in_file);
  41. QString json=MediainFormation(in_file);
  42. ui->plainTextEdit->clear();
  43. ui->plainTextEdit->insertPlainText(json);
  44. }
  45. }
  46. /*
  47. 工程: GetMediaInformation
  48. 日期: 2021-07-23
  49. 作者: DS小龙哥
  50. 环境: win10 QT5.12.6 MinGW32
  51. 功能: 获取媒体信息
  52. */
  53. QString Widget::MediainFormation(QString in_file)
  54. {
  55. QString ffmpeg_path=QCoreApplication::applicationDirPath();
  56. //QString strCmd="C:/FFMPEG/ffmpeg_x86_4.2.2/bin/ffprobe.exe -v quiet -of json -i D:/jiyi.mp4 -show_streams";
  57. ffmpeg_path+="ffmpeg422/";
  58. QString strCmd=QString("ffmpeg422/ffprobe.exe -v quiet -of json -i \"%1\" -show_streams").arg(in_file);
  59. qDebug()<<"strCmd:"<<strCmd;
  60. QProcess process;
  61. // process.setWorkingDirectory(ffmpeg_path);
  62. // process.setReadChannel(QProcess::StandardOutput);
  63. process.start(strCmd);
  64. process.waitForFinished();
  65. return process.readAll();
  66. }
  67. void Widget::dragEnterEvent(QDragEnterEvent *e)
  68. {
  69. if (e->mimeData()->hasUrls())
  70. {
  71. e->acceptProposedAction();
  72. }
  73. }
  74. void Widget::dropEvent(QDropEvent *e)
  75. {
  76. foreach (const QUrl &url, e->mimeData()->urls())
  77. {
  78. QString fileName = url.toLocalFile();
  79. LoadName(fileName);
  80. }
  81. }

3.2 widget.h 


  
  1. #ifndef WIDGET_H
  2. #define WIDGET_H
  3. #include <QWidget>
  4. #include <QFileDialog>
  5. #include <QProcess>
  6. #include <QCoreApplication>
  7. #include <QDebug>
  8. #include <QDragEnterEvent>
  9. #include <QUrl>
  10. #include <QMimeData>
  11. QT_BEGIN_NAMESPACE
  12. namespace Ui { class Widget; }
  13. QT_END_NAMESPACE
  14. class Widget : public QWidget
  15. {
  16. Q_OBJECT
  17. public:
  18. Widget(QWidget *parent = nullptr);
  19. ~Widget();
  20. QString MediainFormation(QString in_file);
  21. void LoadName(QString in_file);
  22. private slots:
  23. void on_pushButton_select_clicked();
  24. protected:
  25. void dragEnterEvent(QDragEnterEvent *e);
  26. void dropEvent(QDropEvent *e);
  27. private:
  28. Ui::Widget *ui;
  29. };
  30. #endif // WIDGET_H

文章来源: xiaolong.blog.csdn.net,作者:DS小龙哥,版权归原作者所有,如需转载,请联系作者。

原文链接:xiaolong.blog.csdn.net/article/details/119026391

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。