hongwazi

hongwazi

3个粉丝

14

问答

0

专栏

8

资料

hongwazi  发布于  2016-10-28 10:34:01
采纳率 0%
14个问答
13883

[已解决]hi3519 循环调用HI_MPI_VENC_SendFrame出错

 
本帖最后由 hongwazi 于 2016-11-1 17:24 编辑

我的目的: 从文件中读取帧,调用HI_MPI_VENC_SendFrame发给H265编码器。
我的问题:我的源文件一共30帧(yuv420sp),但是最后只有第一次调用该接口可以,后面调用该接口就报错。

我已经把源码上传到附件了。

希望易百纳的好心人指点下迷津!

也谢谢之前给我提供帮助的各位网友!



--------------------------------------已解决----------------------------------------------
感谢论坛中各位好心人,现在我把我这边初步能用的demo发出来供给位参考,源码在附件。

易百纳技术社区文件: sample_venc.zip
下载
易百纳技术社区文件: sample_venc.zip
下载
我来回答
回答34个
时间排序
认可量排序

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-10-28 11:06:51
认可0
流程不对, 正确的sendframe流程如下: (抱歉是伪代码)

    while( 1 )
    {
                //1. 取VB, 用循环的目的是会出现VB buffer都累积在VENC的情况
                do
                {
                        hBlock = HI_MPI_VB_GetBlock(VB_INVALID_POOLID, u32BlkSize,NULL);
                }
                while (VB_INVALID_HANDLE == hBlock);

                // 2. 得到VB物理地址和虚拟地址
                u32PhyAddr = HI_MPI_VB_Handle2PhysAddr(hBlock);
                pVirAddr = (HI_U8 *) HI_MPI_SYS_Mmap(u32PhyAddr, u32BlkSize);
                u32PoolId = HI_MPI_VB_Handle2PoolId(hBlock);
   
                // 3. 填写VIDEO_FRAME_INFO_S结构
                memset(&stFrmInfo.stVFrame, 0, sizeof(VIDEO_FRAME_S));
                ...
               
                // 4. 读文件, 填图像数据
                ...
        
                // 5. 发送去VENC
                s32Ret = HI_MPI_VENC_SendFrame(VencGrp, &stFrmInfo);

                // 6. 释放虚拟地址和 VB
                HI_MPI_SYS_Munmap(pVirAddr, u32BlkSize);
                HI_MPI_VB_ReleaseBlock(hBlock);
    }

hongwazi

3个粉丝

14

问答

0

专栏

8

资料

hongwazi 2016-10-28 11:19:35
认可0
好的,我试试,谢谢你了!

hongwazi

3个粉丝

14

问答

0

专栏

8

资料

hongwazi 2016-10-28 13:53:30
认可0
我试了下,每次读取图像的时候,申请vb,然后重新设置下那个帧结构,还是只能转码第一帧图像。

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-10-28 14:07:27
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=40404&ptid=13167]hongwazi 发表于 2016-10-28 13:53[/url]
我试了下,每次读取图像的时候,申请vb,然后重新设置下那个帧结构,还是只能转码第一帧图像。[/quote]

这个...

把 sendframe相关代码贴一下看看

hongwazi

3个粉丝

14

问答

0

专栏

8

资料

hongwazi 2016-10-28 14:15:31
认可0
这是我的整个源码!谢谢了!

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-10-28 16:58:59
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=40411&ptid=13167]hongwazi 发表于 2016-10-28 14:15[/url]
这是我的整个源码!谢谢了![/quote]

在填写pstFrame->stVFrame的地方加两句, 试一下

        pstFrame->stVFrame.u64pts     = frame * 40;
        pstFrame->stVFrame.u32TimeRef = frame * 2;

hongwazi

3个粉丝

14

问答

0

专栏

8

资料

hongwazi 2016-10-28 17:08:59
认可0
好的,我试试!谢了!

hongwazi

3个粉丝

14

问答

0

专栏

8

资料

hongwazi 2016-10-28 17:13:20
认可0
太感谢了,我试了下,是可以连续调用HI_MPI_VENC_SendFrame这个接口了,后面一个小错误,我自己就可以解决。能告诉我下这个修改的原因吗?

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-10-28 17:18:31
认可0
本帖最后由 zhuangweiye 于 2016-10-28 17:20 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=40424&ptid=13167]hongwazi 发表于 2016-10-28 17:13[/url]
太感谢了,我试了下,是可以连续调用HI_MPI_VENC_SendFrame这个接口了,后面一个小错误,我自己就可以解决 ...[/quote]

不好意思不知道真实的答案, 只是看了sample是这么写的

个人猜测:

编码器需要知道每帧的相对时间, 即pts, 如果后面的帧的pts和前面已编码的帧相同就丢掉

这里设置frame*40, 猜测可以理解为25fps, 即每40ms一帧, 楼主可以试试33, 即30fps, 同过/proc/umap/venc来看编码帧率, 看看是不是一致

后面一个暂时看不出是什么意思

hongwazi

3个粉丝

14

问答

0

专栏

8

资料

hongwazi 2016-10-28 17:25:09
认可0
真厉害!我看得demo就没有设置这些时间呢?谢谢了!:victory::victory::victory:   目前我又遇到另外一个问题了,有兴趣解惑下吗?

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-10-28 17:29:26
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=40427&ptid=13167]hongwazi 发表于 2016-10-28 17:25[/url]
真厉害!我看得demo就没有设置这些时间呢?谢谢了!   目前我又遇到另外一个问 ...[/quote]

只要能回答,有时间

不过一般晚上都不在

hongwazi

3个粉丝

14

问答

0

专栏

8

资料

hongwazi 2016-10-28 17:31:23
认可0
好的,我这个问题得另外写个帖子了,谢谢你的耐心解答哦!

chjchj816

0个粉丝

0

问答

0

专栏

0

资料

chjchj816 2016-11-21 16:56:24
认可0
高手是不少啊

hongwazi

3个粉丝

14

问答

0

专栏

8

资料

hongwazi 2016-11-21 18:44:18
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=41608&ptid=13167]chjchj816 发表于 2016-11-21 16:56[/url]
高手是不少啊[/quote]

树懒头像那个庄工是高手!

chjchj816

0个粉丝

0

问答

0

专栏

0

资料

chjchj816 2016-11-22 13:30:16
认可0
呵呵,你也是,你们都是

maojinsong

0个粉丝

0

问答

0

专栏

0

资料

maojinsong 2016-11-29 15:47:50
认可0
非常感谢, 这个帖子对我帮助很大

吴少雄

0个粉丝

15

问答

0

专栏

0

资料

吴少雄 2016-11-30 11:28:54
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=41617&ptid=13167]hongwazi 发表于 2016-11-21 18:44[/url]
树懒头像那个庄工是高手![/quote]

顾问级别的。:)

z_chenxin

0个粉丝

0

问答

0

专栏

0

资料

z_chenxin 2017-03-31 10:26:05
认可0

楼主,使用你的demo。在SAMPLE_COMM_VENC_Start 启动venc的时候提示错误,错误码0xA0088005 试图使用或者销毁不存在的
设备、通道或者资源。。求解

Chenw_Fly

0个粉丝

2

问答

0

专栏

0

资料

Chenw_Fly 2017-07-20 14:40:02
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=40422&ptid=13167]zhuangweiye 发表于 2016-10-28 16:58[/url]
在填写pstFrame->stVFrame的地方加两句, 试一下

        pstFrame->stVFrame.u64pts     = frame * 40 ...[/quote]

庄工的这两句代码,也帮了我一个大忙啊,非常感谢,再次感谢

SA12009903

0个粉丝

12

问答

0

专栏

2

资料

SA12009903 2017-07-20 16:21:54
认可0
这个我在源码里的算法处理那块如果加上sobel处理是不是就能出边缘的视频?
加载中···
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区