andy_mqy

andy_mqy

1个粉丝

26

问答

0

专栏

0

资料

andy_mqy  发布于  2016-04-22 09:30:22
采纳率 0%
26个问答
3956

请教视频解码过程码流中断情况如何显示提示图片

 
主要是希望实现当给解码通道发送码流时,一旦码流中断,希望通道出现一个图片提示或logo图片,用海思芯片这方面是应用哪种模块实现的呢?因为输出窗口的通道数量变化,窗口的大小随之改变,需要图片也随窗口大小一同缩放,请教有这方面使用的网友指点。
我来回答
回答8个
时间排序
认可量排序

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-04-23 01:12:56
认可0
本帖最后由 ngswfx 于 2016-4-23 01:29 编辑

首先,没有码流你要侦测出来,这个应该问题不大吧,没有数据多长时间,很好判断.


然后就是送一个H264的图片数据包进去,别用图片了,虽然也可以,但有更专业的做法,直接送一段264文件进去,这个文件就是一张静止图片,上面显示什么,你需要提前制作好. 和jpg相比,不用对芯片解码通道重置.


我知道这样弄,我也没弄过,我直接用的jpg图片,当很久没有视频数据过来,关闭264解码,开启jpg解码,回复FRAME方式解码,送入jpg数据到解码通道,然后就等着,不用管,显示画面只要不强制清空,会一直显示图片,如果有264数据过来,视频数据回调中,会再次强制将这个通道关闭,开启264解码,视频就恢复了.




至于你说的自适应窗体,我用的HS demo 绑定了VPSS,画面出来就是自适应的.我送入的jpg是352*288的,不论什么分辨率,都对,不论放大缩小,都正常,所以这个不是问题.

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-04-23 01:23:50
认可0
本帖最后由 ngswfx 于 2016-4-23 01:27 编辑

呵呵,你应该偷偷摸摸把图像数据存60秒,放到内存里,然后如果没有数据,自己循环播放.:lol

然后自己赶紧去重新连接图像,这样就用户就不会发现了.

如果实在连接不上,再显示图片,提示用户.

这种显示图片的搞法,最好,好几分钟尝试失败后才进行,此时,管理线程已经放弃重连.

重连的代码最危险,最容易崩溃,我最怕搞这些了.:curse:

andy_mqy

1个粉丝

26

问答

0

专栏

0

资料

andy_mqy 2016-04-26 09:13:30
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=28965&ptid=11089]ngswfx 发表于 2016-4-23 01:12[/url]
首先,没有码流你要侦测出来,这个应该问题不大吧,没有数据多长时间,很好判断.


[/quote]

谢谢楼上回复,第一种方式如果可行觉得很好,不用修改解码通道属性,第二种方式也考虑过,但解码通道属性参数是静态的,需要创建时才能修改。提供的264的压缩包试试看看,这类264格式图片和264压缩视频码流有什么不同?

andy_mqy

1个粉丝

26

问答

0

专栏

0

资料

andy_mqy 2016-04-26 10:18:12
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=28965&ptid=11089]ngswfx 发表于 2016-4-23 01:12[/url]
首先,没有码流你要侦测出来,这个应该问题不大吧,没有数据多长时间,很好判断.


[/quote]

264的图片下来后用3531解码试试,在帧模式下可以解码显示出来,流模式没报错,但是解码没有图像。

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-04-26 11:45:30
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=29140&ptid=11089]andy_mqy 发表于 2016-4-26 10:18[/url]
264的图片下来后用3531解码试试,在帧模式下可以解码显示出来,流模式没报错,但是解码没有图像。[/quote]

文档上不是写了嘛,jpg解码必须用帧模式

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-04-26 11:52:45
认可0
本帖最后由 ngswfx 于 2016-4-26 11:58 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=29131&ptid=11089]andy_mqy 发表于 2016-4-26 09:13[/url]
谢谢楼上回复,第一种方式如果可行觉得很好,不用修改解码通道属性,第二种方式也考虑过,但解码通道属性 ...[/quote]

解码通道属性是否静态这个问题不大。

通常要显示jpg图片时,通道没有数据,销毁,重新建立即可。

我的项目中就这么用的,没事,很稳定。

然后如果数据流又来了,也没事,你可以用一个变量来记录当前解码模式,是JPG模式还是264模式。

只要视频数据过来,立刻检查,这个模式是否匹配,如果不匹配,立刻销毁JPG解码模式的通道,然后重新建立264模式解码通道。

呵呵,我的程序更负责,还支持,动态调整264解码的分辨率。通道不停的销毁,重建,都被流输入直接控制。

这么做,就是因为高清流极为耗费内存。如果搞高路数解码,不可能每个通道都设定1080,所以需要动态调整。先尝试D1,不行就720,还不行就1080,再失败,才放弃。

只要做好相应选项记录,并让流程合理,控制销毁,创建的频繁程度,例如1秒一次的等级,海思底层没事。




////////////////////////////////////////推荐使用264方式,码流小一些,主要不用考虑对通道的销毁问题。不管那种方式,文件都很小,所有通道都用着一个buffer。我的jpg logo图片,40K左右,264的进度条 130K左右。无网络视频也是几十K

这几天我改了程序,2种方式都用了。显示LOGO用jpg模式,连流显示进度,用264文件,显示网络断开也用264文件。

有一点,要注意,如果输入264流,记得把文件缓冲,输入至少5次,一个for循环即可。主要由于开始解码器底层还有数据,如果只输入一次,会导致看不到效果。只有下次再来流,才看得到。

andy_mqy

1个粉丝

26

问答

0

专栏

0

资料

andy_mqy 2016-05-31 10:36:09
认可0
谢谢楼上热线回复,我试着看看。

andy_mqy

1个粉丝

26

问答

0

专栏

0

资料

andy_mqy 2016-06-23 13:41:30
认可0
查看了3536芯片资料,增加了当解码通道码流出现中断时,可以插入用户图片信息(YUV格式)的功能,并且解码例程中进行了验证是可行的。对应3531芯片是没有这个功能的,目前了解到的只能按切换解码通道属性实现了。
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区