问题标签 [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.
android - 在 Android 中获取应用内 MP4 播放器的最快方法
我需要在 Android 应用程序中嵌入视频,并希望尽快完成,以便为我的公司制作演示。不允许使用专有 SDK,所以我的选择似乎是:
关于哪种方法最好的建议?要求是我播放 MP4(通常使用 h.264 视频和 aac 音频),显示进度滑块,具有强大的搜索和开始/停止性能,并通过网络对较大的文件进行渐进式下载。
限制为 Android 4.x 和更新版本很好(所以 OpenMAX 很好)。
android - Tegra3——硬件解码的高延迟
硬件:Nexus 7
操作系统版本:安卓4.1.2
问题:我使用 OpenMAX IL 解码 H.264 视频流(640x480)。在我提供原始 H.264 帧和接收 YUV 帧之间,大约需要 2~4 秒。YUV 帧是正确的。
问:真的需要这么多时间吗?还是我做了错误的配置?
gstreamer - 从 Raspberry pi 上的 JPEG 生成延时摄影时,Gstreamer 挂起
情况:
我想使用板载 H.264 编码器在我的 Raspberry Pi 512mb 上生成延时摄影。
输入:+300 JPEG 文件(2592 x 1944 像素),例如:http: //i.imgur.com/czohiki.jpg
输出:h264 视频文件(2592 x 1944 像素)
GStreamer 1.0.8 + omxencoder ( http://pastebin.com/u8T7mE18 )
树莓派版本:2013 年 6 月 17 日 20:45:38 版本 d380dde43fe729f043befb5cf775f99e54586cde (clean) (release)
内存:gpu_mem_512=400
Gstreamer 管道:
sudo gst-launch-1.0 -v multifilesrc location=GOPR%04d.JPG start-index=4711 stop-index=4750 caps="image/jpeg,framerate=(fraction)25/1" do-timestamp=true !omxmjpegdec !视频速率!视频/x-raw,帧率=1/5!视频转换!omxh264enc !“视频/x-h264,profile=high”!h264解析!队列最大大小字节=10000000!matroskamux !文件接收器位置=test.mkv --gst-debug=4
问题: Gstreamer 挂起并且没有生成输出。
--gst-调试=4:
0:00:01.027331700 2422 0x17824f0 INFO GST_EVENT gstevent.c:709:gst_event_new_segment: 创建段事件时间段 start=0:00:00.000000000, stop=99:99:99.999999999, rate=1.000000, applied_rate=0x, flags时间=0:00:00.000000000,基数=0:00:00.000000000,位置0:00:00.000000000,持续时间99:99:99.999999999
0:00:29.346875982 2422 0x17824f0 INFO basesrc gstbasesrc.c:2619:gst_base_src_loop: 在 gst_base_src_get_range() = eos 之后暂停
--gst-调试=5:
0:01:16.089222125 2232 0x1fa8f0 调试 basesrc gstbasesrc.c:2773:gst_base_src_loop: 暂停任务,原因 eos
0:01:16.095962979 2232 0x1fa8f0 调试 GST_PADS gstpad.c:5251:gst_pad_pause_task:暂停任务
0:01:16.107724723 2232 0x1fa8f0 调试任务 gsttask.c:662:gst_task_set_state: 将任务 0x2180a8 更改为状态 2
0:01:16.435800597 2232 0x1fa8f0 调试 GST_EVENT gstevent.c:300:gst_event_new_custom: 创建新事件 0x129f80 eos 28174
0:01:16.436191588 2232 0x1fa8f0 调试 GST_PADS gstpad.c:4628:gst_pad_push_event:事件 eos 已更新
0:01:16.436414584 2232 0x1fa8f0 调试 GST_PADS gstpad.c:3333:check_sticky: 推送所有粘性事件
0:01:16.436620579 2232 0x1fa8f0 调试 GST_PADS gstpad.c:3282:push_sticky: 已收到事件流启动
0:01:16.436816575 2232 0x1fa8f0 调试 GST_PADS gstpad.c:3282:push_sticky: 事件上限已收到
0:01:16.437001571 2232 0x1fa8f0 调试 GST_PADS gstpad.c:3282:push_sticky: 已收到事件段
0:01:16.440457495 2232 0x1fa8f0 调试 GST_EVENT gstpad.c:4771:gst_pad_send_event_unchecked:在时间 99:99:99.999999999 有事件类型 eos 事件:(NULL)
0:01:16.449986289 2232 0x1fa8f0 调试视频解码器 gstvideodecoder.c:1144:gst_video_decoder_sink_event:收到事件 28174,eos
0:01:16.462165024 2232 0x1fa8f0 调试 omxvideodec gstomxvideodec.c:2489:gst_omx_video_dec_drain:排水组件
0:01:16.463930986 2232 0x1fa8f0 调试 omx gstomx.c:1223:gst_omx_port_acquire_buffer:从端口 130 获取 video_decode 缓冲区
0:01:16.465537951 2232 0x1fa8f0 调试 omx gstomx.c:1334:gst_omx_port_acquire_buffer:video_decode 端口 130 有待处理的缓冲区
0:01:16.466576928 2232 0x1fa8f0 调试 omx gstomx.c:1353:gst_omx_port_acquire_buffer:从 video_decode 端口 130 获取缓冲区 0x21f938 (0xb2068550):0
0:01:16.468237892 2232 0x1fa8f0 调试 omx gstomx.c:1375:gst_omx_port_release_buffer: 将缓冲区 0x21f938 (0xb2068550) 释放到 video_decode 端口 130
0:01:16.470360846 2232 0x1fa8f0 调试 omx gstomx.c:1420:gst_omx_port_release_buffer:释放缓冲区 0x21f938 到 video_decode 端口 130:无 (0x00000000)
0:01:16.472046809 2232 0x1fa8f0 调试 omxvideodec gstomxvideodec.c:2544:gst_omx_video_dec_drain:等待组件耗尽
完整的控制台转储:https ://mega.co.nz/#!eI1ASBSY!R4mnuGqRH7M8dT4q6j03mBKsQ1A-7oCXU4stu50LnOw
问题:
我究竟做错了什么?
是否有另一种或更有效的方法可以从树莓派上的 JPEG 中创建高分辨率延时摄影?
android - 如何注册 OMX 内核以添加新解码器
我指的是帖子:
在它之后,我已经在media_codecs.xml
.
上述帖子的第 2 步要求我执行OMX 核心注册。但是,由于我对这个主题真的很陌生,所以我无法遵循第 2 步。
我有 C 中解码器的工作代码,并且已经移植到 android。
所以我请求是否有人可以提供以下信息:
为当前不受 android 支持的解码器执行 OMX 代码注册的分步指南。
我应该将我的工作 C 代码放在源代码树中的什么位置以及如何指定编译器来编译它
最后,我想告诉我,我正在处理 ICS 代码,
解码器源代码的输出是 YUV420。
任何人请提供有关上述查询的指针。提前致谢。
android - Android:使用 OMXCodec 作为 MediaSource 时,MPEG4Writer 无法启动
我正在尝试从字节数组缓冲区对视频进行编码,为此我使用MPEG4Writer
了本机代码中的 API。
我已经创建了我的自定义MediaSource
类来提供数据,并且我将其包装以OMXCodec
将其提供给MPEG4Writer
:
mVideoOutSource
是我的自定义MediaSource
类,omxEncMeta
如下:
但是当我调用start()
方法时它返回错误代码UNKNOWN_ERROR
。
相反,如果我尝试MPEG4Writer
直接提供我的自定义MediaSource
(而不用它包装它OMXCodec
会成功启动但最终它将停止记录错误Missing codec specific data
(大约 12 帧之后),我认为这是因为我的自定义MediaSource
仅提供有关实际帧的信息但没有关于编解码器格式。
我确定我错过了一些东西OMXCodec
,但我不知道是什么......有没有人可以为我提供一个MediaSource
编码自定义的工作示例?或者给我一些关于为什么这根本不起作用的提示?
如果您需要更多信息,请询问,谢谢!
编辑:我正在针对 API 14 开发这个,所以请不要建议我使用MediaCodec
API 16 :)
编辑:这就是我开始的方式MPEG4Writer
:
这是 logcat ( adb logcat OMXClient:V OMXCodec:V *:W
) 的输出:
c - 在不使用 OpenMAX 的情况下在 Raspberry Pi 中解码视频?
我正在寻找一个直接在 Raspberry Pi 上解码视频的示例,而不使用 OpenMAX。
这解释了多媒体软件的不同层次:
这里没有显示一个附加层,“ MMAL ”层(我相信)它是围绕 OpenMAX 的 Broadcom 包装器。(如果不是,它将是 OpenMAX 替代方案,位于内核驱动程序之上)例如 raspivid 和 raspistill 是使用 MMAL 编写的。
我想要一个视频解码示例,其中输入是原始 H.264,输出是内存中的视频或屏幕上的视频。我想直接使用 VCHIQ来做到这一点,而不是使用 OpenMAX。(主要是出于性能和灵活性的原因)
这个 github 存储库:https ://github.com/raspberrypi/userland/包含上面显示的所有内容的源代码(橙色和绿色框;VCHIQ 本身的源代码,VCHIQ 之上的 OpenMAX IL 实现,还有 OpenGL 和 EGL 实现,. ..)。所以理论上它应该足够开始了。问题是如何使用它是非常不明显的,即使一个人非常熟悉 OpenMAX 和一般的多媒体框架。
例如:vchiq_bulk_transmit () 似乎是用于将视频发送到解码器的函数。但是如何初始化 type 的第一个参数VCHIQ_SERVICE_HANDLE_T
呢?结果在哪里,在帧缓冲区中,或者在结果句柄中,或者......?
编辑可以通过提供使用 vchiq 的视频解码的工作示例、显示调用序列的 API 演练(即使不是工作示例)或指向足够文档的指针来收集赏金。一个工作示例将获得大量额外的赏金:)
android - Android 上的 OpenMAX 记录器
我正在尝试以 h.264 格式将我的视频缓冲区从内存记录到闪存中,并使用此代码来初始化录像机。我应该使用什么格式dataSrc
?
opengl-es-2.0 - OpenGL ES 2.0 还是 OpenMAX 哪个更好?
我正在制作播放 H264 的应用程序。
我使用ffMpeg decode,Converting YUV->RGB with fragmentShader,并渲染它。
然而 frameRate 是不够的(大约 15 ~ 20 fps)。
所以,我问了这个问题,并得到了改变渲染方式的答案。
目前的方法是使用带有 FBO、RBO、RTT 的“glTexSubImage2D”。
推荐的方式是使用 eglImage。
我查阅了很多资料,然后找到了 OpenMax。
大多数硬件都支持转换 yuv420p。所以我不应该顽固地使用ffMpeg。
如果使用 eglImage,我该如何使用“GraphicBuffer”??????
我之前尝试过,我只收到消息“没有文件或目录”
,这行是“#include ui/GraphicBuffer.h”(OfCourse added load libary in Android.mk)
这是 libui.so、android/frameworks/native/ 中的私有 api。
android - 如何分析.so文件?[安卓/Linux]
每个人。
我需要分析Android的libOMXAL.so。(那个在 NDK 文件夹中)
// 我需要找出这个文件是否包含 OMXCLient.cpp 的实现。
我想分析这个 .so 文件以找出它包含的功能。我的操作系统是 Windows7。
我对此很陌生。谁能给我一个提示?谢谢!
openmax - Openmax al中的传输流处理
我正在尝试了解OpenMAX AL中的音频/视频流。我有以下疑问。
据我了解,音频/视频流程如下:
从 android 应用程序中,mpeg2流进入OpenMAX AL ,OpenMAX AL将其提供给 soc,其中将流提供给demux。然后视频流进行解码,然后进行预处理,然后将其渲染为表面/表面纹理以进行显示。解复用后的音频流-->解码进入音频输出设备。
- 什么样的效果/处理 OpenMAX AL 适用于 mpeg2 传输流。
- opensl与 OpenMAX AL 音频有何不同。在
- 它将流渲染到解复用器——>通过 AudioSink、VideoSink(这里有点困惑)。如果它直接提供给音频接收器/视频接收器,在那里它被解复用和解码。
- OpenMAX AL 中的输入模块是什么,即它在哪里接收mpeg2ts并将其用于处理。
问候
马扬克