首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用gstreamer在VLC中播放硬件加速视频

使用gstreamer在VLC中播放硬件加速视频
EN

Stack Overflow用户
提问于 2013-09-06 17:44:46
回答 1查看 2.9K关注 0票数 0

我有一块带有Freescale i.MX.6处理器的主板。有一个H264视频的硬件加速。gstreamer也可以与硬件加速器配合使用。

我需要写一个应用程序,旁边的东西是能够播放全高清视频。作为一个玩家,我选择VLC是因为它的选项和可靠的编程处理方式(libvlc和libvlc-qt库)。

VLC不能与硬件加速器协作,因此有没有办法使用gstreamer (使用加速器)播放视频,并将输出视频发送到VLC?

耽误您时间,实在对不起。马丁。

EN

回答 1

Stack Overflow用户

发布于 2013-09-17 04:43:35

飞思卡尔VPU当然可以与GStreamer一起使用。飞思卡尔开发了GStreamer 0.10插件。我正在为1.0写一些。

您希望使用GStreamer进行解码,并将解码后的帧传输到VLC进行显示。你可以使用RTP来解决这个问题。但是对于FullHD视频来说,您想要做的并不是很好,因为它涉及到至少复制一次帧。

VPU解码为DMA缓冲区(=物理上连续的存储器区域,分配有特殊的分配功能)。这个缓冲区可以在不复制的情况下传递给libvlc,但即使这样,您也需要在VLC中添加一些东西来显示帧,而不必(隐式地)复制它们。如果没有这个VLC扩展,您将无法观看FullHD。

复制和不复制有很大的不同。使用copy时,720p的CPU使用率>80%,1080p的显示不流畅。如果没有副本,CPU使用率将微乎其微(< 10%)。i.MX6能够通过直接存储器访问直接显示物理上连续的缓冲区中的帧,而不必将像素推送到中央处理器。这就是你所需要的。有三种方法可以做到这一点:由飞思卡尔修改的V4L2输出;直接使用i.MX IPU显示到Linux帧缓冲区;使用Vivante 2和Vivante纹理扩展显示。第三个是最好的选择。

但老实说,我要么尝试把VPU解码和GLES直接纹理输出放到VLC中,要么使用GStreamer。将VLC和GStreamer放在同一个应用程序中听起来像是让人沮丧的秘诀。(我假设您希望有一个内含VLC和GStreamer的进程;两个进程的工作起来会相当棘手。)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18654761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档