问题标签 [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.
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 中?
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。
我有一个开始的麻烦和一些关于它的实施的困惑。我想知道一些关于它的信息。
- 为了在我的代码中使用 OMX 编解码器,我应该使用整个 android 源代码树来构建我的项目,还是可以通过添加来自 AOSP 源的一些文件(如果是的话)。
- 我应该从头开始执行哪些步骤来实现它。
有人可以给我一个指导吗
谢谢...
android - mpeg2 ts android ffmpeg openmax
设置如下:
- 多播服务器 1000Mbs、UDP、Mpeg2-TS 第 1 部分 (H.222) 流式传输直播电视频道。
- 四核 1.5Ghz Android 4.2.2 GLES 2.0 渲染器。
- FFMpeg 库。
- 在 Windows 8.1 上运行的 Eclipse Kepler、Android SDK/NDK 等。
- 输出屏幕 1920 x 1080,我使用 2048 x 1024 的纹理,每秒帧数在 35 到 45 帧之间。
应用程序:
- 当媒体图像准备好时,渲染器线程连续运行并通过将片段上传到 gpu 来更新单个纹理。
- 媒体处理程序线程,从服务器/或本地存储下载和处理媒体。
- 视频线程,一个用于缓冲 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 数据包读取器线程。
与此同时,我还将数据包读取器线程和数据包解码器线程的优先级更改为实时。既然这样做了,我就不会丢弃大量丢弃的数据包。
android - 如何从 OMX logcat 消息开始调试 MediaCodec 错误?
使用 MediaCodec,很多时候错误消息来自 OMX 层。如何使用它们来帮助调试不那么微不足道的问题?例如,我有一个应用程序有时无法创建用于解码 h264 流的编解码器。它似乎只发生在三星 S4 (I9505) 等某些设备上,而不会发生在 S3、Nexus 4(旧)上。在大多数情况下,相同的视频在 S4 上都能很好地解码。在创建编解码器之前,有一些密集的计算,包括 OpeGL 的东西。它失败的行是:
在logcatcodecInfo[0].getName()
中具有值OMX.qcom.video.decoder.avc
和以下输出:
此外,如果它是与设备相关的错误,开发人员可以做些什么来帮助解决问题?
android - OpenMAX AL 因 Signal 6 (SIGABRT) 而崩溃。媒体服务器死机
我有一个问题,当 OpenMAX 视频播放完毕后,应用程序会因 Signal 6 而崩溃。
这是我在缓冲区回调中的 EOS 代码。如果我在这里停止媒体播放器并清除队列,也会发生崩溃。根据一些更详细的日志,我发送了一个 EOS 信号,EOS 被处理然后它崩溃了。
这是我发出 EOS 信号的代码
我的墓碑痕迹在这里。
android - 使用来自 android 相机硬件实现的硬件编码器
我想使用硬件编码器从我的 hardware/ti/omap3/camera/CameraHardware.cpp 文件创建 JPEG 图像文件。目前它使用 libjpeg 进行编码。从java代码,我有硬件编码工作,但我不知道如何从本机代码中使用它。谁能指出我正确的方向?许多谷歌搜索没有产生相关结果。
谢谢
android - OpenMax 安卓
在 NDK 最新版本中有一个调用 native-media 的示例。有两个通过标准 android 媒体播放器和使用 OpenMax AL 的本机库渲染视频的示例。从 Android API14 中,引用了 android 自动使用硬件加速。这是否意味着在核心,媒体播放器使用openMax技术来解码视频?
提前致谢 。
android - Android, Native OpenGL/OpenMAX, 屏幕截图
用例
使用 USB 将 Android 屏幕镜像到 PC
潜在(本地)实施方法
讨论
方法 #1肯定会起作用(在 shell 帐户下),但是,每次更新 Android 操作系统时,都需要更新自定义代码以跟上操作系统的变化,方法 #2的 API 保持固定,并且没有需要担心操作系统的变化,问题是是否可以单独使用 OpenGL/OpenMAX 实现镜像?
问题
综上所述,通过 USB 镜像 android 屏幕的最佳方法是什么?
linux - 您如何构建 gstreamer 的 gst-launch 管道?
假设您有一个视频文件。
据我搜索,您首先需要知道它通过mediainfo
命令使用的容器。
然后你需要为容器找到一个解复用器,所以你这样做
现在您有了一个合适的解复用器,例如oggdemux
,您可以拆分视频和音频。如果要显示视频,首先需要知道编解码器名称,然后将其解码输出到屏幕。
回到mediainfo
输出,你去找视频Format
,然后你做
您将找到theoradec
并通过以下方式检查其详细信息
看到sink
和src
。您现在找到了src
isvideo/x-raw
所以您需要找到最终的接收器来输出显示的视频,例如xvimagesink
.
我只是根据一个日文网页写这一切,我没有找到任何其他解释更多的网页(英文或日文)。
我想找到解释如何根据 mediainfo 等完成管道的页面。即使在阅读了网页之后,我仍然不确定如何将元素之间的功能匹配到元素。
你如何建立你的管道?
帽子怎么搭配?
c - OpenMAX、Raspberry PI:获取 H264 的视频尺寸
有什么方法可以直接使用OpenMAX在树莓派上获取H264视频的视频尺寸,而无需使用ffmpeg或其他东西?所有 pi 示例似乎都有硬编码的值。
谢谢!