You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

35 lines
683 B

#ifndef RECORDER_H
#define RECORDER_H
#include <QString>
#include <QSize>
extern "C"
{
#include "libavformat/avformat.h"
}
class Recorder
{
public:
Recorder(const QString& fileName);
virtual ~Recorder();
void setFrameSize(const QSize& declaredFrameSize);
bool open(AVCodec* inputCodec);
void close();
bool write(AVPacket* packet);
private:
const AVOutputFormat* findMp4Muxer();
bool recorderWriteHeader(AVPacket* packet);
void recorderRescalePacket(AVPacket *packet);
private:
QString m_fileName = "";
AVFormatContext* m_formatCtx = Q_NULLPTR;
QSize m_declaredFrameSize;
bool m_headerWritten = false;
};
#endif // RECORDER_H