(APP还存在一点BUG待处理,基本功能可以实现)
头文件:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QCamera>
#include <QCameraInfo>
#include <QCameraViewfinder>
#include <QMediaRecorder>
#include <QCameraImageCapture>
#include <QUrl>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_pushButton_takephoto_clicked();
void on_pushButton_start_clicked();
void on_pushButton_stop_clicked();
private:
Ui::Widget *ui;
QCamera *cam;
QCameraViewfinder *vfinder;
QCameraImageCapture *icapture;
QMediaRecorder *recorder;
};
#endif // WIDGET_H
cpp文件:
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
/*
QList<QCameraInfo> list;
list = QCameraInfo::availableCameras();
for(int i = 0;i < list.size();i ++)
{
qDebug() << list.at(i).deviceName();
qDebug() << list.at(i).description();
qDebug() << list.at(i).position();
qDebug() << "####################";
}
*/
cam= new QCamera("/dev/video0",this);
icapture = new QCameraImageCapture(cam);
vfinder = new QCameraViewfinder(ui->label);
recorder = new QMediaRecorder(cam);
recorder->setOutputLocation(QUrl("/root/homework/20171025/02mycam/mycam/123"));
vfinder->setGeometry(0,0,480,320);
cam->setViewfinder(vfinder);
cam->setCaptureMode(QCamera::CaptureStillImage);
cam->start();
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_takephoto_clicked()
{
cam->setCaptureMode(QCamera::CaptureStillImage);
cam->start();
icapture->capture("/root/homework/20171025/02mycam/mycam/123.jpg");
}
void Widget::on_pushButton_start_clicked()
{
cam->setCaptureMode(QCamera::CaptureVideo);
cam->start();
recorder->record();
}
void Widget::on_pushButton_stop_clicked()
{
recorder->stop();
}
界面展示: