kennybluezy

kennybluezy

0个粉丝

16

问答

0

专栏

0

资料

kennybluezy  发布于  2016-05-09 15:23:05
采纳率 0%
16个问答
4586

h264文件单帧倒退播放

 

各位好,之前发帖咨询过h264文件的单帧播放问题 http://www.ebaina.com/bbs/forum.php?mod=viewthread&tid=8575&highlight=%B5%A5%D6%A1,但没有得到很好的解答。 现需要继续研究此问题,如前贴所讲,单帧前进播放实现是没什么问题的,程序中控制一次只送一帧的数据到VDEC解码,就可以实现单帧前进播放,问题在于如何实现单帧倒退播放。 我的思路仍然是:向前寻找到I帧,从此I帧处开始逐帧送入数据到VDEC,到目前所在帧为止。此时,一种方法是将这些解码出的帧放在内存中,需要时直接将某帧数据送到VO显示;另一种方法是只保留当前帧之前的那一帧的解码数据,并送到VO显示,其余丢弃。第一种方法是只需解码一次,但占用大量内存;第二种方法需解码多次,但内存占用较小。 不知目前我欲采用的方法是否有什么问题?是采用第一种还是第二种方法?大家是如何实现单帧播放的?不知能否告知一下,在此先行谢过!

我来回答
回答10个
时间排序
认可量排序

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-05-09 15:59:51
认可0
用第二种方法吧, 如果I帧间隔不大, 比如1s,意味着点上一帧,最多要解1s的码流, 考虑到本身应该能实时解码,那么等待时间应该在1S多一点,如过解码能力是2倍实时解码能力,那么时间可以减半,
好在是单步倒放,点一下显示下一幅,如果感觉这时间太长,那么只能减少I帧间隔

如果是实时倒放,那么只能用第一种方法了

H.264码流的单帧倒放,好像是DVR国内检测标准,比较坑的功能

ngswfx

2个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-05-09 16:03:07
认可0
本帖最后由 ngswfx 于 2016-5-9 16:06 编辑

PC上的流程比这个好搞,arm上没搞过。

PC上做退帧播放,其实在做退帧显示,不是做退帧解码。解码是解了好多个,然后缓冲YUV,控制YUV显示即可。

主要还是看海思,有没有提供MPI接口,控制退帧显示,如果海思没有提供退帧解码显示的机制,自己搞,有些麻烦了。主要看能否得到解码后的YUV数据,然后自己控制输出。

感觉是别把精力放到编码数据上,而是放到解码后的数据上。编码数据要是送入解码器,不输出,然后等到需要的那一帧解出来,再显示输出,感觉有点别扭。呵呵。:lol

我怎么感觉,海斯应该有这个基本需求的解决方案呀。:lol ,这个又不难搞,而且最基本需求。

kennybluezy

0个粉丝

16

问答

0

专栏

0

资料

kennybluezy 2016-05-09 16:03:39
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=29748&ptid=11259]zhuangweiye 发表于 2016-5-9 15:59[/url]
用第二种方法吧, 如果I帧间隔不大, 比如1s,意味着点上一帧,最多要解1s的码流, 考虑到本身应该能实时解码,那 ...[/quote]

好的,非常感谢您多次的热心解答!再次表示感谢!

kennybluezy

0个粉丝

16

问答

0

专栏

0

资料

kennybluezy 2016-05-09 16:08:19
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=29749&ptid=11259]ngswfx 发表于 2016-5-9 16:03[/url]
PC上的流程比这个好搞,arm上没搞过。

PC上做退帧播放,其实在做退帧显示,不是做退帧解码。解码是解了 ...[/quote]

您好,感谢您的答复。我用的是3531,SDK文档中提到的API接口,好像没有退帧显示的,只有VO那里可以设置显示速率为负数,实现倒退显示,但要求自己送PTS递减的数据过去。因此应该也是要提前解码缓存的。
您的意思是想在ARM上实现倒退显示,如果采用PC上采用的方法,应该就是我提到的第一种方法,先全部解码缓存在内存中,需要时再送到VO显示吧?
再次感谢您的关注!

ngswfx

2个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-05-09 16:10:32
认可0
本帖最后由 ngswfx 于 2016-5-9 16:13 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=29748&ptid=11259]zhuangweiye 发表于 2016-5-9 15:59[/url]
用第二种方法吧, 如果I帧间隔不大, 比如1s,意味着点上一帧,最多要解1s的码流, 考虑到本身应该能实时解码,那 ...[/quote]

要是考虑到内存占用,还真是不好办呀

PC上倒是无所谓,甚至可以做到持续退放。



海思应该提供这2中方案的接口,呵呵。:lol

ngswfx

2个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-05-09 16:16:42
认可0
本帖最后由 ngswfx 于 2016-5-9 16:27 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=29752&ptid=11259]kennybluezy 发表于 2016-5-9 16:08[/url]
您好,感谢您的答复。我用的是3531,SDK文档中提到的API接口,好像没有退帧显示的,只有VO那里可以设置显 ...[/quote]

看了你这个pts递减描述,我怎么感觉如果是文件倒着取流,送入解码器,应该能持续倒放,呵呵:lol

你可以找个文件试试,:lol

///////////////////////////又看了你上篇帖子中的描述,这个文件倒着输入,你好像就是这么搞得,乱码了,看来还是没对,pts递减针对的是VO,不是VDC,估计HS不支持这么搞,我平时也搞解码,ARM倒放,还没细细研究,我看看MPI先。

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-05-09 16:26:31
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=29754&ptid=11259]ngswfx 发表于 2016-5-9 16:16[/url]
看了你这个pts递减描述,我怎么感觉如果是文件倒着取流,送入解码器,应该能持续倒放,呵呵

你 ...[/quote]

倒着取流,放是可以放,只是H.264多数情况下是花屏的;P

楼主是讲解好的图送VO时打上负的时间戳

ngswfx

2个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-05-09 16:28:11
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=29755&ptid=11259]zhuangweiye 发表于 2016-5-9 16:26[/url]
倒着取流,放是可以放,只是H.264多数情况下是花屏的

楼主是讲解好的图送VO时打上负的时间戳[/quote]

对,看来HS不支持这么搞,呵呵:lol

kennybluezy

0个粉丝

16

问答

0

专栏

0

资料

kennybluezy 2016-05-09 16:42:29
认可0
感谢两位的热心关注。正如zhuangweiye所讲,我尝试过倒着取一整帧数据送入VDEC界面播放,结果的确是没多几帧就花屏了。将PTS递减的数据帧送入VO后,显示内容是倒退显示的。看来要实现逐帧倒退解码播放的话,暂时只能采用目前这种很笨拙的方法了。
再次感谢两位的热心帮助!!!

ngswfx

2个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-05-09 16:50:35
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=29760&ptid=11259]kennybluezy 发表于 2016-5-9 16:42[/url]
感谢两位的热心关注。正如zhuangweiye所讲,我尝试过倒着取一整帧数据送入VDEC界面播放,结果的确是没多几 ...[/quote]

不必谢,讨论,互相提升而已。

我自己也没搞过,正好进一步了解倒放的ARM实现。

从我目前再次看VDEC的MPI来看,完全倒着送入编码数据,海斯底层不支持这么搞,VO那个PTS为负不重要,不是倒放的关键点,解码才是。

不过可以自己封装一次接口。将这些动作搞到一起,通过回调送入文件流。
当应用层不停点击倒放,通过回调从文件取流。然后内部处理怎么处理这些编码帧,该送入哪些数据。然后数据不够了,再次触发取流回调。
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区