andy_mqy

andy_mqy

1个粉丝

26

问答

0

专栏

0

资料

andy_mqy  发布于  2015-10-28 16:55:58
采纳率 0%
26个问答
16682

通过虚拟VO图像拼接后进行编码处理

 
各位好:

       将多路视频解码后,通过VPSS模块绑定到虚拟VO上,多路图像拼接为1路之后如果将拼接后图像进行编码,如何处理与VENC模块绑定呢?如果按虚拟VO各个显示通道来逐个与编码模块的通道绑定,
那样会编码多路视频,如果希望将拼接后的图像编码为1路视频,该如何处理?请各位指教。多谢!
我来回答
回答38个
时间排序
认可量排序

sstsst

0个粉丝

0

问答

0

专栏

0

资料

sstsst 2015-11-04 15:44:07
认可0
友情帮顶,友情帮顶

andy_mqy

1个粉丝

26

问答

0

专栏

0

资料

andy_mqy 2015-11-17 15:42:22
认可0
查了一下手册,可以通过HI_MPI_VO_GetScreenFrame函数读取虚拟VO设备视频层的图像,然后写入到VENC编码通道中,但这种方式适用与JPG图片捕捉,不知道该方式能否编码成文件。或者哪位了解,虚拟VO将多通道画面叠加为一副后,如何与编码模块进行绑定,将拼接后的画面编码成一个.h264文件呢?

andy_mqy

1个粉丝

26

问答

0

专栏

0

资料

andy_mqy 2015-12-11 12:49:30
认可0
经过近期的调试上述方式可以实现拼接的,但现在拼接后编码的.h264文件进行解码播放时于原始未进行拼接的视频比较,是快进的节奏,而不是像原理未拼接视频文件正常节奏。怀疑是帧率设置问题,码率控制部分代码如下:按例程没有修改 。请教各位遇到类似问题没有,是那几个参数影响的。         
           if(SAMPLE_RC_CBR == enRcMode)
            {
                stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H264CBR;
                stH264Cbr.u32Gop            = (VIDEO_ENCODING_MODE_PAL== enNorm)?25:30;
                stH264Cbr.u32StatTime       = 1; /* stream rate statics time(s) */
                stH264Cbr.u32SrcFrmRate      = (VIDEO_ENCODING_MODE_PAL== enNorm)?25:30;/* input (vi) frame rate */
                stH264Cbr.fr32DstFrmRate = (VIDEO_ENCODING_MODE_PAL== enNorm)?25:30;/* target frame rate */
                switch (enSize)
                {
                  case PIC_QCIF:
                        stH264Cbr.u32BitRate = 256; /* average bit rate */
                        break;
                  case PIC_QVGA:    /* 320 * 240 */
                  case PIC_CIF:
                        stH264Cbr.u32BitRate = 512;
                        break;
                  case PIC_D1:
                  case PIC_VGA:           /* 640 * 480 */
                        stH264Cbr.u32BitRate = 1024*2;
                        break;
                  case PIC_HD720:   /* 1280 * 720 */
                           stH264Cbr.u32BitRate = 1024*3;
                           break;
                  case PIC_HD1080:  /* 1920 * 1080 */
                             stH264Cbr.u32BitRate = 1024*6;
                           break;
                  default :
                        stH264Cbr.u32BitRate = 1024*4;
                        break;
                }
               
                stH264Cbr.u32FluctuateLevel = 0; /* average bit rate */

goodman

4个粉丝

30

问答

18

专栏

17

资料

goodman 2015-12-11 19:24:09
认可0
你这个通过虚拟设备进来的图像,能再走DHD0或DHD1显示吗?

andy_mqy

1个粉丝

26

问答

0

专栏

0

资料

andy_mqy 2015-12-13 10:30:47
认可0
没有试过,但从虚拟VO是无法显示的。

andy_mqy

1个粉丝

26

问答

0

专栏

0

资料

andy_mqy 2015-12-14 16:17:03
认可0
通过虚拟VO,然后获取视频层的图像帧信息,再写入到编码通道,生成的.h264文件进行解压播放时,比正常速度要快,上网查了说是时间戳的设置,在程序中读取了一下,显示出来的时间戳u64pts都是负值,不知道是不是帧图像的时间戳会影响播放的速度,如果时,该如何设置海思芯片的时间戳呢?

andy_mqy

1个粉丝

26

问答

0

专栏

0

资料

andy_mqy 2015-12-15 12:07:29
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=23376&ptid=9100]wen_jian_1973 发表于 2015-12-15 09:06[/url]
解码pts设置,比如25帧,则可以设第一个帧pts为海思当前pts,以后每帧pts相对上一帧加40000。另外问一下, ...[/quote]

感谢楼上回复,原来例程中解码通道的时间戳初始值和每次递增的值都是0,我将解码通道进行解码时时间戳的递增值修改为40000,仍然比正常播放速度要快,但不是丢帧的那种快。从虚拟VO获取图像时,然后读出图像帧信息结构体VIDEO_FRAME_INFO_S中u64pts为负值,不知道该如何处理才能使编码的图像播放时速度正常。
楼上说支持高清方案,指的是解码高清,还是输出高清。

wen_jian_1973

0个粉丝

9

问答

0

专栏

0

资料

wen_jian_1973 2015-12-15 12:51:47
认可0
初始值如果设好,然后递增40000,那就不应该解码快
你可以试验一下,初始值比当前PTS大个1000000,然后递增40000,看图像解码有没有1秒的延时
如果有,那么PTS工作就正常。否则PTS可能不起作用了,原因有些复杂了。

HI_MPI_VO_GetScreenFrame函数不支持DHD0  DHD1
而且文档说“虚拟设备和标清设备相同”
我总觉得虚拟设备不支持输出高清。
你那边解码、输出什么情况

二爷

0个粉丝

2

问答

0

专栏

0

资料

二爷 2015-12-15 16:05:36
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=23393&ptid=9100]wen_jian_1973 发表于 2015-12-15 12:51[/url]
初始值如果设好,然后递增40000,那就不应该解码快
你可以试验一下,初始值比当前PTS大个1000000,然后递 ...[/quote]

关于HI_MPI_VO_GetScreenFrame函数不支持DHD0和DHD1是因为这两个视频层画面拼接用的是硬件逻辑直接拼接,拼接输出的buffer是VO内部用的私有VB,如果通过这个函数获取上来后,有可能会出现VO内部重新拿来拼接会花屏或者之类的问题,所以不能支持这个函数;而虚拟设备和标清设备的通道画面拼接是直接用TDE或者VGS非VO内部硬件逻辑拼接的,采用的输出VB是公共VB,HI_MPI_VO_GetScreenFrame函数获取上来的VB不存在会被重复输出等问题。
所以虚拟设备并不存在说不支持输出高清分辨率的问题。

andy_mqy

1个粉丝

26

问答

0

专栏

0

资料

andy_mqy 2015-12-15 16:27:22
认可0
解码模块,对pts做递增按40000处理,然后执行完HI_MPI_VO_GetScreenFrame函数后,查看获取的图像帧信息中,时间戳参数读出是负值,而且一直没有变化。感觉解码通道的时间戳递增,对获取图像和将图像写入编码模块HI_MPI_VENC_SendFrame函数没有影响,用printf输出时间戳一直都是固定的数。

没看到MPP里面说,HI_MPI_VO_GetScreenFrame不支持高清视频层,虚拟输出的设备分辨率设置1920*1080是可以的。感谢回复。

andy_mqy

1个粉丝

26

问答

0

专栏

0

资料

andy_mqy 2015-12-17 11:44:52
认可0
虚拟VO是可以和VENC进行绑定的,而不使用HI_MPI_VO_GetScreenFrame函数和HI_MPI_VENC_SendFrame函数,这两个函数适合jpg图片捕获,没有考虑时间戳,而通过绑定关系感觉内部处理了时间戳问题,生成的编码视频可以正常播放。结贴,感谢各位回复。

844315639

0个粉丝

3

问答

0

专栏

0

资料

844315639 2015-12-28 17:17:05
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=23487&ptid=9100]andy_mqy 发表于 2015-12-17 11:44[/url]
虚拟VO是可以和VENC进行绑定的,而不使用HI_MPI_VO_GetScreenFrame函数和HI_MPI_VENC_SendFrame函数,这两 ...[/quote]

大哥,这个怎么绑定的?虚拟VO可以会写到vpss中吗?

icoolbee

0个粉丝

5

问答

0

专栏

0

资料

icoolbee 2016-01-10 21:02:35
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=23487&ptid=9100]andy_mqy 发表于 2015-12-17 11:44[/url]
虚拟VO是可以和VENC进行绑定的,而不使用HI_MPI_VO_GetScreenFrame函数和HI_MPI_VENC_SendFrame函数,这两 ...[/quote]

请问您的结果, 虚拟的VO是否如你所愿支持高清,并可以直接输出不?谢谢

andy_mqy

1个粉丝

26

问答

0

专栏

0

资料

andy_mqy 2016-01-14 13:32:42
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=23885&ptid=9100]844315639 发表于 2015-12-28 17:17[/url]
大哥,这个怎么绑定的?虚拟VO可以会写到vpss中吗?[/quote]

3536增加了VO设备对应的视频层的概念,用视频层与VENC绑定。

andy_mqy

1个粉丝

26

问答

0

专栏

0

资料

andy_mqy 2016-01-14 13:55:20
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=24343&ptid=9100]icoolbee 发表于 2016-1-10 21:02[/url]
请问您的结果, 虚拟的VO是否如你所愿支持高清,并可以直接输出不?谢谢[/quote]

虚拟VO可以设置高清分辨率的输出的,与编码模块绑定生成编码的视频文件。

localhost

0个粉丝

16

问答

0

专栏

4

资料

localhost 2016-01-14 19:43:25
认可0
楼主 刚好和你相反 一路输入 输出多个不同分辨率视频 有何高见

xiaoyaoke

0个粉丝

2

问答

0

专栏

0

资料

xiaoyaoke 2016-02-21 14:54:31
认可0
这个我也有点困惑,楼主解决了没

andy_mqy

1个粉丝

26

问答

0

专栏

0

资料

andy_mqy 2016-02-24 08:52:54
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=25550&ptid=9100]xiaoyaoke 发表于 2016-2-21 14:54[/url]
这个我也有点困惑,楼主解决了没[/quote]

现在是可以通过虚拟VO和VENC编码通道进行绑定,生成编码文件,但目前可以实现4路的1080p的解码和拼接,如果路数增加,编码出的文件进行播放时,播放速度就明显快于正常速度,目前没有找到原因。

xiaoyaoke

0个粉丝

2

问答

0

专栏

0

资料

xiaoyaoke 2016-02-24 19:16:10
认可0
播放时速度不控制吗?

andy_mqy

1个粉丝

26

问答

0

专栏

0

资料

andy_mqy 2016-02-26 13:38:51
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=25681&ptid=9100]xiaoyaoke 发表于 2016-2-24 19:16[/url]
播放时速度不控制吗?[/quote]

楼上说的是输出通道的显示帧率吗?我设置了输出视频层的显示帧率,如果解码4路是可以正常播放的,但解码路数增加再编码之后生成的.264进行播放时,要快于正常速度。
加载中···
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区