问题标签 [openmax]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
11787 浏览

raspberry-pi - Gstreamer 与 gst-omx Raspberry Pi

我按照本教程使用 gst-omx 编译了 gstreamer:http ://www.onepitwopi.com/raspberry-pi/gstreamer-1-2-on-the-raspberry-pi/

一切都很顺利,最后当我运行 gst-inspect-1.0 | grep omx 我得到了:

一切似乎都很好,但是当我尝试将 gst-launch-1.0 与 omx 解码器一起使用时,我什么也没得到。

这条管道运行良好(但非常慢,所以我在中间关闭了它):

然后我用 omx 尝试相同的管道,我得到了这个:

我认为这是这个错误最重要的部分:

但找不到对此错误的任何引用...

试图检查 gst-omx 但它没有任何检查程序。

任何人都可以在这件事上有所了解吗?

非常感谢!=D

更新:

奇怪的是,如果我在没有 hdmi 电缆的情况下启动我的 rpi 并通过 ssh 执行我的管道,它就可以工作(但我没有看到任何图像,因为 hdmi 电缆已关闭)

这是否意味着问题出在 eglglessink 中?

0 投票
1 回答
3984 浏览

android - 果冻豆之前的 android 中 H.264 的硬件加速视频解码

我正在做一个视频会议项目。我们使用软件编解码器对视频帧进行编码和解码,这对于较低的分辨率(最高 320p)来说效果很好。我们已计划支持我们的应用程序以获得高达 720p 的更高分辨率。我开始知道硬件加速可以很好地完成这项工作。

由于硬件编解码器 api 媒体编解码器可从 Jelly Bean 开始,我已将其用于编码和解码,并且工作正常。但是从 2.3 开始支持我的应用程序。所以我需要对 30fps 的 720p 的 H.264 帧进行硬件加速视频解码。

在研究中,通过修改怯场框架来使用 OMX 编解码器的想法。我读过 H.264 的硬件解码器从 2.1 开始可用,编码器从 3.0 开始。我浏览了本网站上给出的许多文章和问题,并确认我可以继续。

我在这里读过关于怯场建筑的文章 -architecture and here- stagefright 它是如何工作的

我在这里阅读了 OMX 编解码器- use-android-hardware-decoder-with-omxcodec-in-ndk

我有一个开始的麻烦和一些关于它的实施的困惑。我想知道一些关于它的信息。

  1. 为了在我的代码中使用 OMX 编解码器,我应该使用整个 android 源代码树来构建我的项目,还是可以通过添加来自 AOSP 源的一些文件(如果是的话)。
  2. 我应该从头开始执行哪些步骤来实现它。

有人可以给我一个指导吗

谢谢...

0 投票
1 回答
708 浏览

android - mpeg2 ts android ffmpeg openmax

设置如下:

  1. 多播服务器 1000Mbs、UDP、Mpeg2-TS 第 1 部分 (H.222) 流式传输直播电视频道。
  2. 四核 1.5Ghz Android 4.2.2 GLES 2.0 渲染器。
  3. FFMpeg 库。
  4. 在 Windows 8.1 上运行的 Eclipse Kepler、Android SDK/NDK 等。
  5. 输出屏幕 1920 x 1080,我使用 2048 x 1024 的纹理,每秒帧数在 35 到 45 帧之间。

应用程序:

  1. 当媒体图像准备好时,渲染器线程连续运行并通过将片段上传到 gpu 来更新单个纹理。
  2. 媒体处理程序线程,从服务器/或本地存储下载和处理媒体。
  3. 视频线程,一个用于缓冲 UDP 数据包,另一个用于将数据包解码为帧。

我将 ffmpeg 连接到 UDP 流就好了,数据包正在被缓冲并且看起来解码得很好。数据包缓冲区很多,没有下/溢出。我面临的问题是它似乎正在分割帧(即每这么多帧中只播放 1 帧)。我知道我需要区分 I/P/B 帧,但目前,举起手来,我不知道。我什至尝试了一种黑客来检测 I 帧无济于事。另外,我只将帧渲染到不到屏幕的四分之一。所以我没有使用全屏解码。

解码后的帧也存储在单独的缓冲区中以消除页面撕裂。我也改变了缓冲区的数量,从 1 到 10 没有运气。

根据我对 OpenMax IL 的发现,它是否仅处理 MPeg2-TS 第 3 部分(H.264 和 AAC),但您可以使用自己的解码器。我知道您可以向其中添加自己的解码组件。值得我尝试这条路线还是应该继续使用ffmpeg?

帧解码器(只有渲染器会在准备好后转换和缩放帧) /* * 此函数将运行数据包并继续解码 * 直到帧首先准备好,或者没有数据包 */

数据包阅读器(作为 pthread 生成) void *mainPacketReader(void *voidptr) { int res;

渲染器只是简单地这样做 // 在调用这个函数之前已经绑定了纹理

过去,libvlc 也有音频同步问题,所以我决定使用 ffmpeg 并从头开始做所有的驴工作。

如果有人对如何停止视频播放的断断续续有任何指示(在 VLC 播放器中效果很好)或可能有另一条路线,我们将不胜感激。

编辑我删除了 I-frame 的 hack(完全没用)。将 sws_scale 函数从渲染器移至数据包解码器。我独自离开了 udp 数据包读取器线程。

与此同时,我还将数据包读取器线程和数据包解码器线程的优先级更改为实时。既然这样做了,我就不会丢弃大量丢弃的数据包。

0 投票
0 回答
6031 浏览

android - 如何从 OMX logcat 消息开始调试 MediaCodec 错误?

使用 MediaCodec,很多时候错误消息来自 OMX 层。如何使用它们来帮助调试不那么微不足道的问题?例如,我有一个应用程序有时无法创建用于解码 h264 流的编解码器。它似乎只发生在三星 S4 (I9505) 等某些设备上,而不会发生在 S3、Nexus 4(旧)上。在大多数情况下,相同的视频在 S4 上都能很好地解码。在创建编解码器之前,有一些密集的计算,包括 OpeGL 的东西。它失败的行是:

在logcatcodecInfo[0].getName()中具有值OMX.qcom.video.decoder.avc和以下输出:

此外,如果它是与设备相关的错误,开发人员可以做些什么来帮助解决问题?

0 投票
1 回答
262 浏览

android - OpenMAX AL 因 Signal 6 (SIGABRT) 而崩溃。媒体服务器死机

我有一个问题,当 OpenMAX 视频播放完毕后,应用程序会因 Signal 6 而崩溃。

这是我在缓冲区回调中的 EOS 代码。如果我在这里停止媒体播放器并清除队列,也会发生崩溃。根据一些更详细的日志,我发送了一个 EOS 信号,EOS 被处理然后它崩溃了。

这是我发出 EOS 信号的代码

我的墓碑痕迹在这里。

http://pastebin.com/CScimETt

0 投票
1 回答
240 浏览

android - 使用来自 android 相机硬件实现的硬件编码器

我想使用硬件编码器从我的 hardware/ti/omap3/camera/CameraHardware.cpp 文件创建 JPEG 图像文件。目前它使用 libjpeg 进行编码。从java代码,我有硬件编码工作,但我不知道如何从本机代码中使用它。谁能指出我正确的方向?许多谷歌搜索没有产生相关结果。

谢谢

0 投票
0 回答
511 浏览

android - OpenMax 安卓

在 NDK 最新版本中有一个调用 native-media 的示例。有两个通过标准 android 媒体播放器和使用 OpenMax AL 的本机库渲染视频的示例。从 Android API14 中,引用了 android 自动使用硬件加速。这是否意味着在核心,媒体播放器使用openMax技术来解码视频?

提前致谢 。

0 投票
2 回答
3998 浏览

android - Android, Native OpenGL/OpenMAX, 屏幕截图

用例

使用 USB 将 Android 屏幕镜像到 PC

潜在(本地)实施方法

  1. 使用 Android 开源,根据您的需要修改屏幕记录并使用 ADB 在您的 Android 设备上重新安装
  2. 使用众所周知的原生 API,例如OpenGL / OpenMAX来捕获屏幕

讨论

方法 #1肯定会起作用(在 shell 帐户下),但是,每次更新 Android 操作系统时,都需要更新自定义代码以跟上操作系统的变化,方法 #2的 API 保持固定,并且没有需要担心操作系统的变化,问题是是否可以单独使用 OpenGL/OpenMAX 实现镜像?

问题

综上所述,通过 USB 镜像 android 屏幕的最佳方法是什么?

0 投票
1 回答
2358 浏览

linux - 您如何构建 gstreamer 的 gst-launch 管道?

假设您有一个视频文件。
据我搜索,您首先需要知道它通过mediainfo命令使用的容器。

然后你需要为容器找到一个解复用器,所以你这样做

现在您有了一个合适的解复用器,例如oggdemux,您可以拆分视频和音频。如果要显示视频,首先需要知道编解码器名称,然后将其解码输出到屏幕。
回到mediainfo输出,你去找视频Format,然后你做

您将找到theoradec并通过以下方式检查其详细信息

看到sinksrc。您现在找到了srcisvideo/x-raw所以您需要找到最终的接收器来输出显示的视频,例如xvimagesink.

我只是根据一个日文网页写这一切,我没有找到任何其他解释更多的网页(英文或日文)。

我想找到解释如何根据 mediainfo 等完成管道的页面。即使在阅读了网页之后,我仍然不确定如何将元素之间的功能匹配到元素。

你如何建立你的管道?
帽子怎么搭配?

0 投票
1 回答
330 浏览

c - OpenMAX、Raspberry PI:获取 H264 的视频尺寸

有什么方法可以直接使用OpenMAX在树莓派上获取H264视频的视频尺寸,而无需使用ffmpeg或其他东西?所有 pi 示例似乎都有硬编码的值。

谢谢!