沉水之鱼 发表于 2016-06-13 09:57

求助:MP4V2封装H264

本帖最后由 沉水之鱼 于 2016-06-13 09:58 编辑

第一次使用MP4V2封装H264码流,封装出来的MP4文件快进快退不正常,会卡顿模糊。

MP4V2初始化代码char mp4_filename;
        time_t timep;
        struct tm *p;
        time(&timep);
        unsigned char sps[] = {0x47, 0x4d, 0x0, 0x29, 0x99, 0xa0, 0x1e, 0x0, 0x89, 0xf9, 0x61, 0x0, 0x0, 0x3, 0x3, 0xe8, 0x0, 0x0, 0xc3, 0x50, 0x84};
        unsigned char pps[] = {0x48, 0xee, 0x3c, 0x80};
        p = gmtime(&timep);
        memset(mp4_filename, 0, RECORD_FILENAME_LEN);
        sprintf(mp4_filename,"/sdcard/picture/video/record_%d%d%d_%d%d%d.mp4",p->tm_year,p->tm_mon,p->tm_mday,p->tm_hour,p->tm_min,p->tm_sec);
        RecordContext.mp4ContextSet.mp4_filehandle= MP4Create(mp4_filename, 0);
        if(MP4_INVALID_FILE_HANDLE == RecordContext.mp4ContextSet.mp4_filehandle)
        {
                ERR_PRINTF("MP4Create file error!");
                return -1;
        }
        if(!MP4SetTimeScale(RecordContext.mp4ContextSet.mp4_filehandle, 90000))
        {
                ERR_PRINTF("MP4SetTimeScale failed!");
                MP4Close(RecordContext.mp4ContextSet.mp4_filehandle, 0);
                RecordContext.mp4ContextSet.mp4_filehandle = MP4_INVALID_FILE_HANDLE;
                return -1;
        }
        MP4SetVideoProfileLevel(RecordContext.mp4ContextSet.mp4_filehandle, 0x7F);
        RecordContext.mp4ContextSet.video = MP4AddH264VideoTrack(RecordContext.mp4ContextSet.mp4_filehandle, 90000, 90000/30, 1920, 1080, sps, sps, sps, 3);
        if (MP4_INVALID_TRACK_ID == RecordContext.mp4ContextSet.video)
    {
                ERR_PRINTF("add video track failed!");
                MP4Close(RecordContext.mp4ContextSet.mp4_filehandle, 0);
                RecordContext.mp4ContextSet.mp4_filehandle = MP4_INVALID_FILE_HANDLE;
                return -1;
    }

        MP4AddH264SequenceParameterSet(RecordContext.mp4ContextSet.mp4_filehandle, RecordContext.mp4ContextSet.video, sps, 21);
        MP4AddH264PictureParameterSet(RecordContext.mp4ContextSet.mp4_filehandle, RecordContext.mp4ContextSet.video, pps, 4);其中sps pps 是从H264中提取出来的
写的时候,非关键帧 sps+pps+b/p帧 是否需要去掉sps pps ?

页: [1]
查看完整版本: 求助:MP4V2封装H264