qn1516784304

qn1516784304

0个粉丝

5

问答

0

专栏

0

资料

qn1516784304  发布于  2018-06-21 16:23:19
采纳率 0%
5个问答
3231

MP4v2把h264录制成MP4

 
使用hi3536调用MP4v2库,把h264录制成MP4,出现花屏现象,请问大家有没遇到相识的情况,求赐教
[img=720,420]F:\png.png[/img]

补充内容 (2018-12-28 09:56):
解决了
我来回答
回答4个
时间排序
认可量排序

qn1516784304

0个粉丝

5

问答

0

专栏

0

资料

qn1516784304 2018-06-21 16:24:56
认可0
如下图的彩色花屏

qn1516784304

0个粉丝

5

问答

0

专栏

0

资料

qn1516784304 2018-06-21 17:33:02
认可0
播放时打印的信息

qn1533003427

0个粉丝

1

问答

0

专栏

0

资料

qn1533003427 2018-08-15 10:47:39
认可0
解决了吗?没解决我可以一起看看什么问题;QQ:2746318932

qn1516784304

0个粉丝

5

问答

0

专栏

0

资料

qn1516784304 2018-12-28 09:34:21
认可0
本帖最后由 qn1516784304 于 2018-12-28 09:41 编辑

解决了
for (i = 0; i < pstStream->u32PackCount; i++)
               writeH264toMP4(pstStream->pstPack.pu8Addr+pstStream->pstPack.u32Offset, pstStream->pstPack.u32Len-pstStream->pstPack.u32Offset);






int writeH264toMP4(unsigned char *buffer, unsigned int frame_size)
{
        getSystemTime();//获取系统时间
        char nalu_type = buffer[4] & 0x1f;
        unsigned char *nalu_data = (unsigned char *) &buffer[4];
        unsigned int nalu_size = frame_size - 4;       
        if(nalu_type == 0x07 && 1 == isFirstSPS) // sps   
        {   
                MP4SetTimeScale(mp4_file[Record_file_num],90000);
                printf("isFirstSPS.\n");   
                video[Record_file_num] = MP4AddH264VideoTrack   
                                    (   mp4_file[Record_file_num],     
                                            VIDEO_TIME_SCALE,     
                                            VIDEO_TIME_SCALE / FRAMES_PER_SECOND,     
                                            1920,//1080,                     //1920        // width   
                                            1080,//720,                      //1080        // height   
                                            nalu_data[1],                 // sps[1] AVCProfileIndication   
                                            nalu_data[2],                 // sps[2] profile_compat   
                                            nalu_data[3],                 // sps[3] AVCLevelIndication   
                                            3);                             // 4 bytes length before each NAL unit   
                if (video[Record_file_num] == MP4_INVALID_TRACK_ID)   
                {   
                    MP4Close(mp4_file[Record_file_num],0); //add in 20180619
                    printf("add video track failed.\n");   
                    return 0;   
                }
                MP4SetVideoProfileLevel(mp4_file[Record_file_num], 0x7F);
                MP4AddH264SequenceParameterSet(mp4_file[Record_file_num], video[Record_file_num], nalu_data, nalu_size);                                             
                isFirstSPS = 0;  
        }
        else if(nalu_type == 0x08 && 1 == isFirstPPS) // pps   
        {   
        MP4AddH264PictureParameterSet(mp4_file[Record_file_num], video[Record_file_num], nalu_data, nalu_size);
        isFirstPPS = 0;   
        printf("isFirstPPS.\n");   
        }  
      else   
        {   
        buffer[0] = nalu_size >> 24;   
        buffer[1] = nalu_size >> 16;   
        buffer[2] = nalu_size >> 8;   
        buffer[3] = nalu_size & 0xff;                 
        if(1 == isFirstFrame)   
                {
                   printf("isFirstFrame.\n");   
                   if(!MP4WriteSample(mp4_file[Record_file_num], video[Record_file_num], buffer, frame_size, 3600, 0, 1))  
                        {
                        printf("MP4WriteSample failed 3600\n");
                            return 0;   
                        }
                        isFirstFrame = 0;
                        tempvoltime=nowvoltime;
                }   
                else
                {
                        if(!MP4WriteSample(mp4_file[Record_file_num], video[Record_file_num], buffer, frame_size, (nowvoltime-tempvoltime)*90, 0, 1))  
                                 {
                        printf("MP4WriteSample failed 2\n");
                              return 0;   
                                 }                 
                        tempvoltime=nowvoltime;
                }  
        }         
        return 0;
}

  希望有帮助
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区