yenfuliu

yenfuliu

0个粉丝

16

问答

0

专栏

0

资料

yenfuliu  发布于  2016-07-07 15:04:59
采纳率 0%
16个问答
5494

3521A编码VENC获取码流的设定

 

我的编码目前是多包模式,看MPP上写单包模式要在ko加载时设置模块参数OneStreamBuffer 来选择,所以去load3521a文件修改insmod hi3521a_venc.ko OneStreamBuffer=1,但加载失败出现 insmod: can't insert 'hi3521a_venc.ko': Invalid argument,请问是我的思路哪里有问题?
我来回答
回答11个
时间排序
认可量排序

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-07-07 15:48:49
认可0
把 OneStreamBuffer=1 放在 hi3521a_h264e.ko 后面试试

yenfuliu

0个粉丝

16

问答

0

专栏

0

资料

yenfuliu 2016-07-07 16:01:55
认可0
原来是这样,难怪怎么调都没用感谢你的回覆,可以再请教struct hiVENC_ATTR_H264_S中的bByFrame 帧/包模式获取码流 又有甚么功用?

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-07-07 16:26:54
认可0
本帖最后由 ngswfx 于 2016-7-7 16:32 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=33431&ptid=11873]yenfuliu 发表于 2016-7-7 16:01[/url]
原来是这样,难怪怎么调都没用感谢你的回覆,可以再请教struct hiVENC_ATTR_H264_S中的bByFrame 帧/包模式 ...[/quote]

你设置以后,把码流时间以及数据包大小打印出来,看一看规律,自己就明白了。

帧模式是帧,包模式是包。:lol

一秒中25个帧(30),相当于25张图片。

包模式下,被拆分了,出来的数据比较均匀,每个数据包都比较小。

/////////这直接对后面整个框架形成影响,例如解码处理。

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-07-07 16:32:12
认可0
本帖最后由 zhuangweiye 于 2016-7-7 16:37 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=33431&ptid=11873]yenfuliu 发表于 2016-7-7 16:01[/url]
原来是这样,难怪怎么调都没用感谢你的回覆,可以再请教struct hiVENC_ATTR_H264_S中的bByFrame 帧/包模式 ...[/quote]

帧模式, 就是SPS/PPS等包括实际码流都打成了一个包

包模式, SPS/PPS包括实际码流是分开的

作用: 当业务需要单独的SPS, PPS时, 比如一些网传应用时, 需要单独的SPS/PPS, 用帧模式就要先去解出SPS/PPS, 相对就复杂了, 这时就可以用包模式, 如果不需要这些参数,比如只是简单存文件,那么帧模式就可以了

当然一般都会用包模式, 毕竟从包模式得到的几个包可以通过copy得到一个帧模式的包

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-07-07 16:36:32
认可0
本帖最后由 ngswfx 于 2016-7-7 17:04 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=33435&ptid=11873]zhuangweiye 发表于 2016-7-7 16:32[/url]
帧模式, 就是SPS/PPS等包括实际码流都打成了一个包

包模式, SPS/PPS包括实际码流是分开的
[/quote]

我估计我和那个VENC里面的那个slice分包,搞混了 。
///////////////////////////////////////////////////////////////

里面这个参数设置以后,一堆的数据包出来,一秒钟远远超过30个,都特别小。

这个3.0的MPP,有个HI_MPI_VENC_SetH264SliceSplit函数设置。

//////////一般都用帧模式,后面的过程比较容易处理,即便回放中的帧进退。如果弄成好多小包模式,就需要对各个包的细节进行字节分析了,有点难度。解码会麻烦不少。
//不过我能想到的好处有一个,就是中间环节,缓冲都可以比较小了。由于关键帧很大,通常网络处理中,缓冲最大值是个比较头大的参数,设置小了,4K编码这一类大分辨率肯定就溢出了。设置太大,又浪费内存。
//尤其路数高了,就差别非常明显了。

/////////////////////////看了看文档描述,还真是有些关联:

多包模式:对于 H.264,当为 I 帧时,调用 HI_MPI_VENC_GetStream 接口,一个
I 帧包含 4 个 NAL 包(4 个 NAL 包分别为 sps 包、pps 包、sei 包、Islice 包,这里
假设 pps 包只有一个,且 4 个 NAL 包是独立的,包类型不同);对于 JPEG,一帧
图像包含 2 个包(1 个图像参数包,1 个图像数据包,2 个包是独立的,包类型不
同)。
z
编码码流帧配置支持两种模式:单包模式和多包模式(在不调用 slice 分割接口及其插
入用户数据接口的情况下),如图 6-6 所示。
单包模式:对于 H.264,当为 I 帧时,调用 HI_MPI_VENC_GetStream 接口,一个
I 帧包含 1 个 NAL 包(该 NAL 包的包类型为 Islice 包,且包含 sps、pps、sei、
Islice 的数据);对于 JPEG,一帧图像只有 1 个包(该包的包类型为图像数据包,
且包含图像参数包的数据)。
两种模式可通过 ko 加载时设置模块参数 OneStreamBuffer 来选择。OneStreamBuffer=1
表示单包模式;OneStreamBuffer=0 表示多包模式,系统默认 OneStreamBuffer=0。
当用户调用分包接口(例如:HI_MPI_VENC_SetH264SliceSplit 时,一帧会被分成多个
slice
,如果用户选择单包模式时,对于 I 帧来说,该帧第一个 ISlice 包会包含 sps、
pps、sei 的数据,该帧的其他 ISlice 则没有。即对于 H.264,sps、pps、sei 的数据只会
出现在 I 帧的第一个 Islice 中并合为 1 个包,且包类型为 ISlice;对于 JPEG/MJPEG 来
说,图像参数包只会出现在一帧的第一个数据包中并合为 1 个包,且包类型为数据

yenfuliu

0个粉丝

16

问答

0

专栏

0

资料

yenfuliu 2016-07-07 17:34:39
认可0
做了个试验OneStreamBuffer=1,bByFrame分別设定HI_TRUE / HI_FALSE去录影,还是每秒拿到30个封包没有改变,感觉上OneStreamBuffer、bByFrame讲的都是一样的意思,但规格上有明写出OneStreamBuffer针对I frame,bByFrame反而觉得设了都没作用!

艾编程的鲁小班

18个粉丝

25

问答

17

专栏

32

资料

艾编程的鲁小班 2016-07-07 17:53:25
认可0
看了你们的讲解好有收获,但我是来要资源的。。。你们有3516A里面有ittb_stream程序吗?

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-07-07 18:05:51
认可0
本帖最后由 ngswfx 于 2016-7-7 18:08 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=33440&ptid=11873]yenfuliu 发表于 2016-7-7 17:34[/url]
做了个试验OneStreamBuffer=1,bByFrame分別设定HI_TRUE / HI_FALSE去录影,还是每秒拿到30个封包没有改变 ...[/quote]

=1当然没变化了。就是30个包的。
///////文档你没看明白。
=0,才是多包模式。才有有变化,最起码关键帧前面多了几个很小的包(sps、pps、sei)。

/////你要是再把HI_MPI_VENC_SetH264SliceSplit设置好了,应该非常多包才对(会按照要求把每一帧继续拆分的)。

艾编程的鲁小班

18个粉丝

25

问答

17

专栏

32

资料

艾编程的鲁小班 2016-07-07 18:11:19
认可0
本帖最后由 wfjdemmye 于 2016-7-7 18:14 编辑

楼主有3516的MPP2吗? 能否给我一份。。qq:1012655018,

yenfuliu

0个粉丝

16

问答

0

专栏

0

资料

yenfuliu 2016-07-07 18:28:05
认可0
我也沒有,目前是在研究3521A

yenfuliu

0个粉丝

16

问答

0

专栏

0

资料

yenfuliu 2016-07-07 18:52:59
认可0
系统默认OneStreamBuffer=0,所以一开始我bByFrame不管怎么设置都是33个包,其中I frame就如ngswfx你说被拆成sps、pps、sei、IDR,后来才照zhuangweiye,OneStreamBuffer改设成1才成为祯模式30个包,所以有点糊涂bByFrame好像都没有发挥作用!!
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区