无帝老三

无帝老三

0个粉丝

12

问答

0

专栏

0

资料

无帝老三  发布于  2016-06-07 18:01:04
采纳率 0%
12个问答
6097

怎么实现海思3518视频缩放功能

 
看了sample例程,venc进行264编码时,制定了三个通道,分别是HD720  VGA   QVGA
难道这样就是视频缩放了吗?
看文档说,是在vpss的通道实现缩放的啊?
论坛里搜索也没有找到相关帖子,没有没做过的大神,指点下
我来回答
回答22个
时间排序
认可量排序

DarkQin

1个粉丝

8

问答

0

专栏

2

资料

DarkQin 2016-06-07 18:04:33
认可0
是的,vpss->venc 海思内部会自动缩放

无帝老三

0个粉丝

12

问答

0

专栏

0

资料

无帝老三 2016-06-07 18:21:40
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=31270&ptid=11541]DarkQin 发表于 2016-6-7 18:04[/url]
是的,vpss->venc 海思内部会自动缩放[/quote]

和 vi 的关系是怎样的啊?

无帝老三

0个粉丝

12

问答

0

专栏

0

资料

无帝老三 2016-06-07 18:26:27
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=31270&ptid=11541]DarkQin 发表于 2016-6-7 18:04[/url]
是的,vpss->venc 海思内部会自动缩放[/quote]

如果要实现局部缩放改怎么办呢?
没有在例程里看到相关代码

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-06-08 08:26:25
认可0
1. 关于VPSS缩放的问题

   一般来说VPSS channel都是设为auto模式的(缺省), 意思就是VPSS channel后续只能绑定一个数据接收者, VPSS channel在这种模式下只要设输入最大图像尺寸而无需设置输出图像大小, 它会根据
  后续绑定的模块要求的图像大小来处理自己接收到的图像.
  举例说明:
  比如VPSS group 0设置的最大输入图像大小为 宽为1920 高为1080
        group0 channel 0 绑定VENC 0, VNEC 0(这里没有强调是group还是channel主要是考虑到MPP3.0已经没有group的概念了)设为1920x1080, 那么VPSS group0 channel0 就会输出1920x1080的图
        group0 channel 1 绑定VENC 1, VNEC 1设为1280x720, 那么VPSS group0 channel1 就会输出1280x720的图
        group0 channel 2 绑定VENC 2, VNEC 2设为352x288, 那么VPSS group0 channel2 就会输出352x288的图
这样VPSS实际就是完成了图像的缩放

      3518要注意的是一般VPSS的物理通道只有缩小没有放大, 要放大要物理通道再绑定扩展通道来实现

2. 与VI的关系
   先看绑定关系 VI-->VPSS -->VENC
   所以VI实际是数据源, VPSS的输入宽高必须设置得大于等于VI采集图像的宽高(当然有些是支持面积大于等于即可, 这个要根据具体SDK来看是否支持)
   VI的图像尺寸和VENC没有必然联系,当然一般主码流都是应该和VI采集的图像大小保持一致的

3. 局部缩放的问题, 一般来说只有局部放大, 是通过VPSS来实现的
   可以参考 HI_MPI_VPSS_SetGrpCrop()的使用方法

无帝老三

0个粉丝

12

问答

0

专栏

0

资料

无帝老三 2016-06-14 16:38:00
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=31285&ptid=11541]zhuangweiye 发表于 2016-6-8 08:26[/url]
1. 关于VPSS缩放的问题

   一般来说VPSS channel都是设为auto模式的(缺省), 意思就是VPSS channel后续只 ...[/quote]

目前项目需求需要实现时间戳、视频缩放功能,
海思sample相当于把这些功能写成demo分开了,怎么把这些功能整合到一个main中实现?
是不是可以基于海思mmp文件夹,把里面不需要的.c .h .o 等文件删除掉?
把各个sample都去除掉,保留一个,然后把需要的功能都添加到保留的这一个上面?
上面的思路走的通吗?

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-06-14 17:31:32
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=31612&ptid=11541]无帝老三 发表于 2016-6-14 16:38[/url]
目前项目需求需要实现时间戳、视频缩放功能,
海思sample相当于把这些功能写成demo分开了,怎么把这些功 ...[/quote]



感觉楼主的想法是很偷懒的, 而且偷懒的方式也歪了

简单的方法是把每个demo的流程搞清楚(海思的demo已经够简单了),把需要相关的函数都找出来,  然后把相同的合并起来, 自己设计一个初始化的函数即可(这个只适合流程不变的情况)

关于代码组织的问题, 一般情况下初学者都会用到 common下面的那些东西, 可以考虑在sample下面建一个自己的文件夹, 自己添加源文件进去(哪怕是copy其他目录的代码), demo代码毕竟只是海思为了展示能做什么而写的的代码,学习还行但并不适合一般项目, 如果只想着用demo简单来拼凑,那搞出来的东西也也停留在demo的级别上,无法很好理解海思mpp的概念(比如有些已经都认为是可用的代码, 连基本的VB分配都搞不清楚)

当然如果只是为了应付当我什么都没说

ngswfx

2个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-06-14 17:45:09
认可0
本帖最后由 ngswfx 于 2016-6-14 17:48 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=31621&ptid=11541]zhuangweiye 发表于 2016-6-14 17:31[/url]
感觉楼主的想法是很偷懒的, 而且偷懒的方式也歪了

简单的方法是把每个demo的流程搞清楚(海思的dem ...[/quote]

:lol

林子大了,什么鸟都有,什么想法都有很正常

老三明显是来这里娱乐大家的

尤其这句:海思sample相当于把这些功能写成demo分开了,怎么把这些功能整合到一个main中实现?   笑死我了。:lol

无帝老三

0个粉丝

12

问答

0

专栏

0

资料

无帝老三 2016-06-14 18:08:21
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=31626&ptid=11541]ngswfx 发表于 2016-6-14 17:45[/url]
林子大了,什么鸟都有,什么想法都有很正常

老三明显是来这里娱乐大家的
[/quote]

本人真心菜鸟,大侠见笑了。
开发板自己公司做的,手头资料有3518e的SDK,单独执行sample下程序测试下功能是OK的,但是项目开发需要各个功能组合,文件组织没有demo参考的话,Makefile菜鸟写的也很垃圾,如果有demo的话,可以读懂后再修改下!
不知大侠有没有3518e的开发板demo,发给新手学习学习

无帝老三

0个粉丝

12

问答

0

专栏

0

资料

无帝老三 2016-06-14 18:21:28
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=31621&ptid=11541]zhuangweiye 发表于 2016-6-14 17:31[/url]
感觉楼主的想法是很偷懒的, 而且偷懒的方式也歪了

简单的方法是把每个demo的流程搞清楚(海思的dem ...[/quote]

现在我都是直接在海思sample程序上改动后测试效果的,vio venc region 这三部分代码读的比较多,初始化流程很相似,应该可以抽取出来。目前已经把region部分改为时间戳显示功能了,想法是,以region代码为基础,在上面添加缩放功能、抓拍功能。
而且想把这些文件拿出来,到自己的工作目录,这样makefile也需要自己写。对于我来说感觉挑战不小。

无帝老三

0个粉丝

12

问答

0

专栏

0

资料

无帝老三 2016-06-14 18:42:58
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=31621&ptid=11541]zhuangweiye 发表于 2016-6-14 17:31[/url]
感觉楼主的想法是很偷懒的, 而且偷懒的方式也歪了

简单的方法是把每个demo的流程搞清楚(海思的dem ...[/quote]

我这样做麻烦您给参谋一下,
把整个mpp文件夹复制出来,只留下include  lib   sample 和 Makefile.param
sample下只留下region  和 common  
这样是不是一个简单的demo了?

ngswfx

2个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-06-14 19:49:34
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=31639&ptid=11541]无帝老三 发表于 2016-6-14 18:42[/url]
我这样做麻烦您给参谋一下,
把整个mpp文件夹复制出来,只留下include  lib   sample 和 Makefile.param ...[/quote]

海斯的东西,就是这么用的。

你把include lib common目录拷贝出来,弄到你的应用程序里面,尤其把common也揉进去,common里面不是有很多文件吗,都加到程序里面,利用#ifdef 0    #endif把没用的函数模块都屏蔽掉。在这个基础上修改封装。

调试的程序,就选择其中一个demo修改即可,也可以自己写一个,主要的代码还是要利用common里面的以及封装好的流程,当然,你也可以仿照着自己写。

无帝老三

0个粉丝

12

问答

0

专栏

0

资料

无帝老三 2016-06-15 11:39:23
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=31643&ptid=11541]ngswfx 发表于 2016-6-14 19:49[/url]
海斯的东西,就是这么用的。

你把include lib common目录拷贝出来,弄到你的应用程序里面,尤其把comm ...[/quote]

谢谢大侠,已经把之前在sample下实现的功能单独拿出来了,在开发板上运行效果正常,下一步在此基础上添加功能。

无帝老三

0个粉丝

12

问答

0

专栏

0

资料

无帝老三 2016-06-15 11:56:48
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=31621&ptid=11541]zhuangweiye 发表于 2016-6-14 17:31[/url]
感觉楼主的想法是很偷懒的, 而且偷懒的方式也歪了

简单的方法是把每个demo的流程搞清楚(海思的dem ...[/quote]

现在可以把海思rgn代码拿出来单独运行了,目前实现是一个线程执行venc 一个线程执行时间戳显示,
osd是加载venc通道,
我想要在此基础上实现缩放功能,应该怎么做?要把osd加载vpss通道上吗?

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-06-15 12:24:20
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=31709&ptid=11541]无帝老三 发表于 2016-6-15 11:56[/url]
现在可以把海思rgn代码拿出来单独运行了,目前实现是一个线程执行venc 一个线程执行时间戳显示,
osd是 ...[/quote]

缩放体现在哪里? 只有编码吗?

如果只有编码, 那么OSD和缩放没关系,原来在哪里还在哪里, 该多大还是多大, 除非缩放连OSD也要跟着缩放

ngswfx

2个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-06-15 12:30:57
认可0
本帖最后由 ngswfx 于 2016-6-15 13:35 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=31709&ptid=11541]无帝老三 发表于 2016-6-15 11:56[/url]
现在可以把海思rgn代码拿出来单独运行了,目前实现是一个线程执行venc 一个线程执行时间戳显示,
osd是 ...[/quote]

海思rgn代码应该是针对VI的吧,这个叠加是前期叠加,对后来的VPSS,VENC都生效,直接在原始YUV数据流上弄上OSD了,这个OSD会一直跟随数据流走,解码也有。

一旦叠加上了,就不用管了,缩放无需特定处理。你想多了。

VPSS内部就有缩放,你只要分配好输出,送去编码的分辨率大小,是720还是1080等,VPSS自己就会缩放。

//////从你描述来看,你不就是采集图像,叠加OSD,送去压缩嘛,别想太复杂,海斯SDK流程很简单,自适应程度很高。

//如果你想输出各个分辨率的编码,你就创建3个VPSS,创建3个VENC,把VI帮顶到3个VPSS上,3个VPSS分别绑定到3个VENC上。

然后OSD对VI,通过RGN叠加,这样全部出来的VENC都有OSD,而且相对位置都一样。

/////////////一定要明确rgn针对的是YUV数据源在做动作。虽然我也没弄过。呵呵:lol

///////////////////看了一下海斯的rgn DEMO,它的SDK构架更进一步,估计是这个把你弄迷惑了,除了支持在VI上叠加以外,它还支持在VENC上单独叠加。

你就注意看HI_MPI_RGN_Create后面HI_MPI_RGN_AttachToChn时,针对的是那种源在操作。如果针对的是VI,这个操作会对后来所有流生效,他把YUV像素的数据都修改了,如果针对某个VENC,则仅仅针对这一路VENC。

底层应该是在VENC之前,也就是VPSS后,把OSD搞到YUV上,修改了实际的YUV像素数据,再送去编码了。如果能在这里叠加,就可以让不同编码分辨率显示的OSD不一样。

///////////不知道这个RGN是否支持绑定VDEC或者VO,能绑VPSS也行,能后期NVR做不少应用了?


////////////这里有个坑,HI_ID_GROUP,这个的确不好理解呀

无帝老三

0个粉丝

12

问答

0

专栏

0

资料

无帝老三 2016-06-15 13:45:17
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=31716&ptid=11541]ngswfx 发表于 2016-6-15 12:30[/url]
海思rgn代码应该是针对VI的吧,这个叠加是前期叠加,对后来的VPSS,VENC都生效,直接在原始YUV数据流上 ...[/quote]

我看海思文档,
Hi35xx 支持在 GROUP 通道叠加 Overlay、在 VI 通道填充 Cover 和 CoverEx 并叠加 OverlayEx

sample例程是加载venc上了吧,
如果加载vi通道,要用OverlayEx?
这个hiMOD_ID_E没搞懂代表什么意思?
换成HI_ID_VIU吗?

无帝老三

0个粉丝

12

问答

0

专栏

0

资料

无帝老三 2016-06-15 13:57:14
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=31713&ptid=11541]zhuangweiye 发表于 2016-6-15 12:24[/url]
缩放体现在哪里? 只有编码吗?

如果只有编码, 那么OSD和缩放没关系,原来在哪里还在哪里, 该多大还是多 ...[/quote]

只有编码缩放,osd不需要缩放
如果osd不更改加载位置,那不是只有一个编码通道会有osd吗?

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-06-15 14:16:12
认可0
本帖最后由 zhuangweiye 于 2016-6-15 14:20 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=31727&ptid=11541]无帝老三 发表于 2016-6-15 13:57[/url]
只有编码缩放,osd不需要缩放
如果osd不更改加载位置,那不是只有一个编码通道会有osd吗?[/quote]


关于编码添加OSD的问题, 一般情况下都是在VENC上加RGN, 一个通道加一个,
也就是如果有三个码流要编,就要做3个RGN, 分别加, 原因是不同的分辨率用的OSD的大小字体都是不同的, 不要希望在VI/VPSS上去加, 那样效果不好,满足大分辨率的就很难满足小分辨率的, 反之也一样, 就是做出来了保证你被打回去重做

另外, 这里OSD仅仅指时间,通道号等等东西, 一般使用overlay(overlayex 会耗性能); 关于马赛克或者遮盖一类的一般使用cover, 这个可以考虑在vi或vpss上加

无帝老三

0个粉丝

12

问答

0

专栏

0

资料

无帝老三 2016-06-15 14:49:19
认可0
本帖最后由 无帝老三 于 2016-6-15 15:45 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=31735&ptid=11541]zhuangweiye 发表于 2016-6-15 14:16[/url]
关于编码添加OSD的问题, 一般情况下都是在VENC上加RGN, 一个通道加一个,
也就是如果有三个码流要编, ...[/quote]

恩,谢谢您耐心指点,至少现在方向明确了,后续自己再多看例程

再请教您一个问题,如果我把视频流上传到电脑上,然后在浏览时,可以用鼠标控制放大或缩小,这个放大缩小和编码的视频没有关系吧?
就是播放器的缩放功能与我上传的码流没有关系吧

无帝老三

0个粉丝

12

问答

0

专栏

0

资料

无帝老三 2016-06-15 17:35:36
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=31716&ptid=11541]ngswfx 发表于 2016-6-15 12:30[/url]
海思rgn代码应该是针对VI的吧,这个叠加是前期叠加,对后来的VPSS,VENC都生效,直接在原始YUV数据流上 ...[/quote]

大神,播放器的缩放和编码时缩放有关系吗?
上传到pc端640*480的视频,用vlc播放时放大缩小,
海思的缩放是不是分辨率更改下?
加载中···
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区