问题标签 [stagefright]

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 回答
3403 浏览

android - 替换Android中的/system/lib/libstagefright.so,无法开机

我使用 Android 2.3.3_r1 源代码编译了 libstagefright 并生成了 libstagefright.so 文件。然后我用它替换了我手机(HTC g14 android 2.3.x)中的/system/lib/libstagefright.so。但是在那之后我的手机无法重新启动(卡在启动屏幕中)。

我之前在 HTC g8 上做过同样的工作。在某些ROM中,没有任何问题是可以的。在其他人中,我也有同样的问题。所以有人可以帮助我吗?

0 投票
1 回答
1842 浏览

android - Android 4.0 及以上版本的 RTP-Server

在 Android 4.0+ 上工作。

我正在分析使用 RTP 编码 MPEG-2 将我的相机视频实时流式传输到 Window PC 的方法。

  1. android 4.0+ 中是否有现成的“rtp-server”?

  2. 以下是真的::“Android 平台缺乏对流协议的支持,这使得很难将实时音频/视频流式传输到支持 Android 的设备。” 从网站提取

  3. 目前我分析使用了 ffmpeg 库中的 ffserver,但 FPS < 5。这很慢。有没有人探索过其他具有更多 FPS 的解决方案?

  4. 有人尝试过使用 StageFright 吗?从相机捕获原始数据并将其发送到 stagefright 框架进行编码,然后使用 RTP 进行流式传输?

非常感谢。

0 投票
0 回答
359 浏览

android - select output colospace in ffmpeg's stagefright codec

I'm new here so first of all, i'd like to say that this is an awesome comunity :-). Well, let's start with my question.

Currently, I'm working with an embbeded systems (freescale imx6 and exynos 4412 based processors). The main idea is to develop a voip app with HD video (1080p) for Android. The video is captured via H264 hardware webcam (logitech c920). Until now, I'm able to use the ffmpeg's libstagefright codec, it works really fine and faster but I have the problem that lots of people have. "The colorspace conversion".

As I can see in the code,

We can get the output colorspace format, but my question is:

Could I define other output colorspace format? How?

If I were able to perform this task via stagefright (because the vendors provides the hardware accel by this way) I could overcome the colorspace conversion time penalty when I perform this task via OpenGL.

Thank you!

Regards

0 投票
1 回答
493 浏览

android - 为什么当 ts 文件更改时,Stagefright 1.2 中的 HLS 流会失真?

我已经设置了Apache 2.0几个.m3u8文件,这些mpeg2ts文件通过HLS. 这些ts文件是由libavformat我从. 当我在or上播放结果时,一切正常。但在 Android (Stagefright 1.2) 上,视频有几个问题:transmuxingMP4youtubeHLSVLCQT

  1. 全屏选项不起作用
  2. 视频时长显示为 1:40,而实际上是 2:00
  3. 视频有时无法启动,您必须重新加载页面
  4. .ts切换基础流时,视频在过渡点可靠地扭曲(撕裂和像素化) 。

如果我不使用HTML5' 标签,其中一些会得到改善。但问题 #4 仍然存在。

我可以m3u8在 Stagefright 上播放其他 's 没有任何上述问题,所以我假设我的 transmuxing 代码是错误的,但即使放弃它并使用我的(最近添加的)HLS分段功能ffmpeg也有同样的问题。重新编码libx264没有任何变化。

我对此束手无策。

0 投票
3 回答
6274 浏览

android - 本机窗口 queueBuffer 函数未呈现 Stagefright 解码器的输出

我正在将一个 SurfaceView 表面从 Java 传递到 JNI,在那里我从该表面获取本机窗口。 Stagefright从 mp4 文件中解码 h264 帧。在解码过程中,我调用ANativeWindow::queueBuffer()以发送要渲染的解码帧。解码或调用都没有错误queueBuffer(),我得到的只是黑屏。

我真的觉得我没有正确设置本机窗口,以便在queueBuffer()调用时将其渲染到屏幕上。但是,我可以通过 memcpy 直接将像素渲染到本机窗口。不幸的是,在我实例化后OMXClient尝试手动绘制像素时发生段错误,所以看来我必须使用queueBuffer().

我在 onCreate() 中设置的表面视图:

创建表面后,我使用表面调用本机 init() 函数:

在 JNI 中创建原生窗口并启动解码线程:

我的帧解码例程是 la vec.io 的 Stagefright 解码示例

编辑:接受 Ganesh 的建议,我与 Awesome Renderer 进行交互以更改色彩空间。在此期间,很明显没有在 Stagefright 中设置颜色格式。

尝试显式设置颜色空间(将 kKeyColorFormat 设置为 yuv420P 颜色空间)会导致出队问题。这可能是有道理的,因为我指定的颜色格式是任意的。

0 投票
0 回答
951 浏览

android - 将编解码器集成到 Android 多媒体框架

我有一个自定义编解码器,目前 android 多媒体框架不支持。使用编解码器的源代码,我为新格式创建了一个简单的视频播放器应用程序。但是现在我想将它集成到 androids 多媒体框架中。

在帖子的帮助下:

如何将解码器集成到多媒体框架

我了解了我需要的基础知识。首先,我需要将我的编解码器集成到 Jelly Bean 及以上版本中。因此,在上面的帖子之后,我已经下载了 android 源代码,并按照上面的帖子中的说明,我在media_codecs.xml代码片段中添加了我的解码器信息,如下所示:

一旦我完成了上述操作,

  • 我在想的是,我应该在 android 源代码树的哪个目录中添加我的customDecoder的源代码。
  • 一旦我添加了我的customDecoder代码,我应该在哪里给出命令/编写 make 文件来编译我的源代码。
  • 最后,当一切都成功构建和编译后,如果我想在 android 模拟器中测试我的集成,应该执行什么步骤。

任何对我的疑问有所了解的专家,请回答。

提前致谢。

-问候

山姆

0 投票
1 回答
3547 浏览

android - 如何注册 OMX 内核以添加新解码器

我指的是帖子:

Android:如何将解码器集成到多媒体框架

在它之后,我已经在media_codecs.xml.

上述帖子的第 2 步要求我执行OMX 核心注册。但是,由于我对这个主题真的很陌生,所以我无法遵循第 2 步。

我有 C 中解码器的工作代码,并且已经移植到 android。

所以我请求是否有人可以提供以下信息:

  • 为当前不受 android 支持的解码器执行 OMX 代码注册的分步指南。

  • 我应该将我的工作 C 代码放在源代码树中的什么位置以及如何指定编译器来编译它

  • 最后,我想告诉我,我正在处理 ICS 代码,
    解码器源代码的输出是 YUV420。

任何人请提供有关上述查询的指针。提前致谢。

0 投票
1 回答
1333 浏览

android - 如何使用 MediaCodec API 调用我的自定义解码器

我有一个视频解码器,它被移植到 android 并作为一个独立的应用程序成功运行,但是我想将此代码集成到 android 多媒体框架中。因此,我已将这段代码添加到 android 的媒体框架中。那就是我已将其添加到root/media/libstagefright/codecs/myDecoder.

我已经Android.mk在 myDecoder 文件夹下编写了一个,我已经添加并放置了我的解码器的源代码,编译成功,我可以在模拟器中运行它。

现在,我读到MediaCodecandroid 中的新 API 允许我们访问和使用 android 源代码中可用的编解码器。

我的问题是,现在我已经将我的解码器集成到了 android 源代码中:

我是否可以使用我的解码器来解码输入流并将其呈现在设备屏幕上?

我的解码器有一个函数,应该调用它来解码流。该函数将输入流的路径作为参数。

我是否应该修改解码器源代码中的某些内容以匹配MediaCodecAPI 的要求。

任何有关相同的帮助都会对我很有帮助。

-问候。

0 投票
2 回答
1931 浏览

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 开发这个,所以请不要建议我使用MediaCodecAPI 16 :)

编辑:这就是我开始的方式MPEG4Writer


这是 logcat ( adb logcat OMXClient:V OMXCodec:V *:W) 的输出:

0 投票
1 回答
325 浏览

android - MediaCodec 会截断传入的数据包以进行解码吗?

MediaCodec用来解码用 ffmpeg 编码的 h264 数据包。当我使用 ffmpeg 解码时,帧显示正常。但是,当我使用MediaCodec硬件解码器进行解码时,有时会在帧中间出现黑条。仅当编码比特率设置得足够高(例如超过 4000000)以使任何给定AVPacket大小都高于 95000 左右时,才会发生这种情况。似乎MediaCodec(或底层解码器)正在截断帧。不幸的是,我需要质量,所以比特率不能被拒绝。我已经验证帧没有在其他地方被截断,并且我尝试设置MediaFormat.KEY_MAX_INPUT_SIZE为更高的值。

有没有人遇到过这个问题或知道我可以解决它的方法?

我附上了我在 OpenGL 中渲染然后在我的 Galaxy S4 上解码的随机像素图像。

一只忙碌的猫