qn1513131564

qn1513131564

0个粉丝

13

问答

0

专栏

3

资料

qn1513131564  发布于  2018-05-15 13:50:54
采纳率 0%
13个问答
2340

3520d+nvp1918c录制视频,每5s保存一个视频,出现了类似快进的视频

 
        因项目需要,每5s需要保存一次视频,出现了如附件类似的视频
        这种现象不定时出现,逻辑代码如下:
                                frameNum++;
                                if(frameNum == 28)

                                {
                                        printf("the frameNum is %d\t",frameNum);

                                        fileFrameNum++;


                                        if(fileFrameNum == 5)

                                        {
                                                printf("the fileFrameNum is %d\n",fileFrameNum);

                                                fileFrameNum = 0;

                                                if(param->chn_type == CT_CH0)

                                                {

                                                        fclose(pfd);

                                                        pfd = NULL;


                                                        memset(path, 0, 128);

                                                        sprintf(path,"%s",get_any_path(param->stgctx, PT_CH0_H264, 1));

                                                        //printf("the filename is %s\n",path);

                                                        pfd = fopen(path, "wb");

                                                        if(!pfd)

                                                        {

                                                                printf("open file %s failed!\n",path);

                                                                return 0;

                                                        }

                                                }

                                                }


                                        }

                                        frameNum = 0;

        开始按时间上5s保存,但保存的视频文件不能播放,如图中所示,sps,pps,sei丢了。因此按照h264分析软件写的上面代码。基本可以实现5s保存,但不定时出现附件视频中快进的现象,前2s播放还正常,但后面就成了快进,不知道哪里的问题?那位大侠能给点解决方案?
易百纳技术社区文件: DEV00001_CH0_20180515123358.7z
下载
我来回答
回答5个
时间排序
认可量排序

miaoweijun1976

0个粉丝

2

问答

0

专栏

1

资料

miaoweijun1976 2018-05-16 09:08:50
认可0
你这个是裸流,未包含时间戳信息。很多播放软件都是快播的效果。有些播放器是按照默认帧率25帧来播。有快进很正常

qn1513131564

0个粉丝

13

问答

0

专栏

3

资料

qn1513131564 2018-05-16 09:19:34
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=87725&ptid=39582]miaoweijun1976 发表于 2018-5-16 09:08[/url]
你这个是裸流,未包含时间戳信息。很多播放软件都是快播的效果。有些播放器是按照默认帧率25帧来播。有快进 ...[/quote]

那保存视频的时候能把时间戳一起保存起来吗?80%保存的视频用VLC播放正常,只有很少部分出现上面的现象。有什么好的解决方法吗?谢谢

miaoweijun1976

0个粉丝

2

问答

0

专栏

1

资料

miaoweijun1976 2018-05-16 13:58:16
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=87728&ptid=39582]qn1513131564 发表于 2018-5-16 09:19[/url]
那保存视频的时候能把时间戳一起保存起来吗?80%保存的视频用VLC播放正常,只有很少部分出现上面的现象。 ...[/quote]

mp4v2或者ffmpeg封装成mp4.或者librtmp封装为flv。方案很多

qn1513131564

0个粉丝

13

问答

0

专栏

3

资料

qn1513131564 2018-05-17 10:56:52
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=87748&ptid=39582]miaoweijun1976 发表于 2018-5-16 13:58[/url]
mp4v2或者ffmpeg封装成mp4.或者librtmp封装为flv。方案很多[/quote]

有demo吗,我现在直接在HI_VOID* SAMPLE_COMM_VENC_GetVencStreamProc(HI_VOID *p)函数中初始化
printf("inital the MP4CreateEx\n");
        MP4FileHandle file = MP4CreateEx("test.mp4", 0, 1, 1, 0, 0, 0, 0);
   
        if (file == MP4_INVALID_FILE_HANDLE)
        {
                printf("open file fialed.\n");
                return;
        }
       
        MP4SetTimeScale(file, 90000);
        printf("MP4SetTimeScale set\n");
        MP4TrackId video = MP4AddH264VideoTrack(file, 90000, 90000 / 25, stVencChnAttr.stVeAttr.stAttrH264e.u32PicWidth, stVencChnAttr.stVeAttr.stAttrH264e.u32PicHeight,
                                            0x64, //sps[1] AVCProfileIndication
                                            0x00, //sps[2] profile_compat
                                            0x1f, //sps[3] AVCLevelIndication
                                            3); // 4 bytes length before each NAL unit
        if (video == MP4_INVALID_TRACK_ID)
        {
                printf("add video track fialed.\n");
                return;
        }
        printf("MP4AddH264VideoTrack set\n ");
        MP4SetVideoProfileLevel(file, 0x01);
        printf("MP4SetVideoProfileLevel \n");
后面写入关闭。但程序运行到printf("MP4SetTimeScale set\n");下面就abort了。我觉的自己都晕菜了


会不会在视频采集的时候出现了编码帧率不足的现象,才导致了5s播放了20s视频??封装成mp4是不是还是不能避免这个现象?

qn1513131564

0个粉丝

13

问答

0

专栏

3

资料

qn1513131564 2018-07-03 18:05:07
认可0
结贴:
从目前测试看,我换了一张卡,速度快。没有出现这个问题了。
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区