@分享一个批量MP4转JPG图片的工具
1. 使用背景
在进行深度学习训练的时候,经常需要采集自己的数据,如果一张一张采集,会很麻烦,如果直接用摄像头拍摄,是一个非常好的办法。但是找了网上,都没有好用的视屏转图片的工具,要么太大,要么在线的慢的要死,于是自己写了一个。基于:
- Qt
- ffmpeg
软件截图如下:
2. 实现代码
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QFileDialog>
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_btnLoadVideo_clicked();
void on_btnSetPath_clicked();
void on_btnStartConvert_clicked();
private:
Ui::MainWindow *ui;
QString save_path;
QStringList video_file_list;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include <QDebug>
#include <QProcess>
#include <QFileInfo>
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setWindowTitle(tr("视屏转图片工具"));
}
MainWindow::~MainWindow()
{
delete ui;
}
//导入视屏
void MainWindow::on_btnLoadVideo_clicked()
{
video_file_list.clear();
video_file_list = QFileDialog::getOpenFileNames(this, tr("选择视屏"), ".", "MP4(*.mp4)");
qDebug()<<video_file_list;
}
//设置导出路径
void MainWindow::on_btnSetPath_clicked()
{
save_path = QFileDialog::getExistingDirectory(this, tr("设置路径"), ".");
}
//开始转换
void MainWindow::on_btnStartConvert_clicked()
{
QString path = QCoreApplication::applicationDirPath();
qDebug()<<path;
QProcess *proce = new QProcess();
for(int i=0; i<video_file_list.length(); i++)
{
QStringList arg_list;
arg_list<<"-i";
arg_list<<video_file_list.at(i);
arg_list<<"-r";
arg_list<<ui->lineEdit->text();
arg_list<<"-f";
arg_list<<"image2";
QString img_name = QFileInfo(video_file_list.at(i)).baseName();
img_name = save_path + "/" + img_name + "-%05d.jpg";
arg_list<<img_name;
qDebug()<<img_name;
proce->start(path+"/ffmpeg.exe", arg_list);
proce->waitForFinished();
}
delete proce;
}
FFmpeg下载:http://ffmpeg.org/
选择ffmpeg.exe下载