本文通过调用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
MP4Encoder.h

相关文章: