本文通过调用OpenCV库采集摄像头视频,再经过libx264库将视频帧转化成h264格式的裸码流,随后再利用mp4v2库的相关接口将264裸码流保存成mp4格式的视频文件。
头文件:
#ifndef _MP4_ENCODER_H #define _MP4_ENCODER_H #include "mp4v2/mp4v2.h" class MP4Encoder { public: MP4Encoder(void); MP4Encoder(const char* fileName, int width, int height, int timeScale = 90000, int frameRate = 25); ~MP4Encoder(void); // open or creat a mp4 file. bool CreateMP4File(const char *fileName, int width, int height, int timeScale = 90000, int frameRate = 25); // wirte 264 data, data can contain multiple frame. bool WriteH264Data(const unsigned char* pData,int size); // close mp4 file. void CloseMP4File(); private: void Init(); private: int m_nWidth; int m_nHeight; int m_nFrameRate; int m_nTimeScale; MP4TrackId m_videoId; MP4FileHandle m_fileHandle; }; #endif