您好,欢迎访问一九零五行业门户网

mpv2 mp4录制

mp4录制 mp4录制程序是根据mpeg4ip中mpeg4ip-1.5.0.1\server\mp4live\file_mp4_recorder.cpp文件改的。程序支持h264aac(raw 流)的写入方式,用到了动态库mp4v2-2.0.0,不要用mpeg4ip中那个较老的版本,因为在录制大文件时会有效率问题,下面是一些mp4v2接
                                                                                                                           mp4录制
mp4录制程序是根据mpeg4ip中mpeg4ip-1.5.0.1\server\mp4live\file_mp4_recorder.cpp文件改的。程序支持h264+aac(raw 流)的写入方式,用到了动态库mp4v2-2.0.0,不要用mpeg4ip中那个较老的版本,因为在录制大文件时会有效率问题,下面是一些mp4v2接口的简介。
mp4filehandle mp4create (const char* filename,uint32_t  flags)
功能:创建mp4文件句柄。
 返回:mp4文件句柄。
 参数:filename 要录制的mp4文件名;flags 创建文件类型,如果要创建普通文件用默认值0就可以,如要录制大于4g的mp4文件此处要设置mp4_create_64bit_data。
bool mp4settimescale( mp4filehandle hfile, uint32_t value )
功能:设置时间标度。
返回:成功返回true,失败返回false。
参数:hfile mp4文件句柄,value 要设置的值(每秒的时钟ticks数)。
mp4trackid mp4addh264videotrack(mp4filehandle hfile,
                                     uint32_t timescale,
                                     mp4duration sampleduration,
                                     uint16_t width,
                                      uint16_t height,
                                     uint8_t avcprofileindication,
                                     uint8_t profile_compat,
                                     uint8_t avclevelindication,
                                     uint8_t samplelenfieldsizeminusone)
功能:添加h264视频track。
返回:返回track id号。
参数:hfile mp4文件句柄,timescale 视频每秒的ticks数(如90000),sampleduration 设置为 mp4_invalid_duration,width height 视频的宽高,avcprofileindication profile (baseline profile, main profile, etc. see),profile_compat compatible profile,avclevelindication levels,samplelenfieldsizeminusone 设置为3.
注意: avcprofileindication,profile_compat, avclevelindication,这三个参数值是在h264流中得到的。
mp4trackid mp4addaudiotrack(
        mp4filehandle hfile,
        uint32_t timescale,
        mp4duration sampleduration,
        uint8_t audiotype)
 功能:添加音频(aac)track。
 返回:返回track id号。
 参数:hfile mp4句柄,timescale音频每秒的ticks数(如16000),下面两参数设置为mp4_invalid_duration和mp4_mpeg4_audio_type。
bool mp4settrackesconfiguration(
       mp4filehandle  hfile,
       mp4trackid     trackid,
       const uint8_t* pconfig,
       uint32_t       configsize );
 功能:设置音频解码信息(如果设置错误会导致没有声音)。
 返回:成功返回true,失败返回false。
 参数:hfile 文件句柄,trackid 音频的track id,pconfig 记录解码信息的二进制流,configsize 解码串的长度。
 注意:mpeg4ip 使用faac进行aac音频编码的,在编码时可以调用相应的函数得到二进制串pconfig和长度configsize,但是如果aac不是用faac编码的,这是需要自己填充pconfig,可以参考faac的实现,下面是一个填充结构例子:
前五个字节为 aac object types  low     2
接着4个字节为 码率index        16000      8
接着4个字节为 channels 个数                 1
应打印出的正确2进制形式为  00010 | 1000 | 0001 | 000
                                                            2          8        1
bool mp4writesample(
    mp4filehandle  hfile,
    mp4trackid     trackid,
    const uint8_t* pbytes,
    uint32_t       numbytes,
    mp4duration    duration default(mp4_invalid_duration),
    mp4duration    renderingoffset default(0),
    bool           issyncsample default(true) );
功能:写一帧视频数据或写一段音频数据。
返回:成功返回true,失败返回false。
参数:hfile 文件句柄,trackid 音频或视频的track id,pbytes为要写的数据流指针,numbytes为数据字节长度,duration为前一视频帧与当前视频帧之间的ticks数,或这是前一段音频数据和当前音频数据之间的ticks。issyncsample 对视频来说是否为关键帧。
注意:1,duration这个参数是用来实现音视频同步用的,如果设置错了会造成音视频不同步,甚至会出现crash现象(一般出现在调用mp4close是crash)。 2,对于视频流mp4writesample函数每次调用是录制前一帧数据,用当前帧的时间戳和前一帧的时间戳计算duration值,然后把当前帧保存下来用做下次调用mp4writesample时用,写音频数据一样。
void mp4addh264sequenceparameterset(
    mp4filehandle  hfile,
    mp4trackid     trackid,
    const uint8_t* psequence,
    uint16_t       sequencelen );

void mp4addh264pictureparameterset(
    mp4filehandle  hfile,
    mp4trackid     trackid,
    const uint8_t* ppict,
    uint16_t       pictlen );
功能:添加序列参数集,添加图像参数集。
参数:hfile 文件句柄,trackid 视频track id,psequence和ppict为要写入的序列图像参数集的数据指针,sequencelen和pictlen为串长度。
注意:当检测到序列参数集或图像参数集更新时要调用mp4addh264sequenceparameterset或mp4addh264pictureparameterset进行更新。
void mp4close(
    mp4filehandle hfile,
    uint32_t    flags default(0) );
功能:关闭以打开的mp4文件。
参数:hfile 文件句柄,flags 是否允许在关闭mp4文件前做一些额外的优化处理。
注意:在录制较小的mp4文件时可以把flags设置为默认值,如果录制较大的文件最好把flags设置为mp4_close_do_not_compute_bitrate否则调用mp4close函数会用掉很长的时间。
其它类似信息

推荐信息