问题标签 [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 回答
1691 浏览

android - 如何在 android 源代码中调用我的自定义解码器

我正在尝试将我的软件 HEVC 解码器添加到 android 源代码中。我希望生成libstagefright.so文件。

我提到了其他类似的问题,对我没有太大帮助。我无法通过以下问题或参考指南获得清晰的画面。

1) 将编解码器集成到 Android 多媒体框架中。

2)集成自定义解码器,在android上播放,同时显示fps。

3)如何注册 OMX 内核以添加新的解码器。

有人可以帮助我将新的自定义解码器与 Android 集成的步骤。

现在,我刚刚添加到 media_codecs.xml 和{ "OMX.google.h265.decoder" , "hevcdec" , "video_decoder.hevc" }SoftOMXPlugin.cpp 文件中。

需要编辑哪些其他文件才能将新格式添加到 android 源代码中?哪些函数调用我的解码器源代码(softomxcplugin 源文件是否调用我的解码器?)。

0 投票
0 回答
1106 浏览

android - Android MediaCodec 是否使用硬件编解码器?

我对 Android 使用什么编解码器感到困惑MediaCodec

从以下链接:

我能感觉到,MediaCodec用于硬件编码。

但是,当我看

Dave Burke 在 2012 年 Google 峰会上发表的“Android 中的新低级媒体 API”演示文稿是一个框架,它提供了一种通过HAL 层MediaCodec引入新编解码器的架构。OMX IL[如果我错了,请纠正我?] 这意味着,它可以是硬件编解码器,也可以是软件编解码器。

我如何确保是否使用了硬件编解码器?

0 投票
1 回答
4135 浏览

android - MediaCodec如何在Android中找到框架内的编解码器?

我试图了解 MediaCodec 如何用于硬件解码。

我对android内部的了解非常有限。

这是我的发现:

有一个 xml 文件表示 android 系统中的编解码器详细信息。

这意味着,如果我们使用媒体编解码器从 Java 应用程序创建编解码器

它应该在 xml 文件的帮助下找出相应的编码器。

我在做什么?

我试图弄清楚我们的代码的哪一部分正在读取 xml,并根据给定的“类型”找到编解码器。

1)应用层:

2) MediaCodec.java -> [框架/base/media/java/android/media/MediaCodec.java ]

3)

4) JNI 实现 -> [ frameworks/base/media/jni/android_media_MediaCodec.cpp ]

来自 frameworks/base/media/jni/android_media_MediaCodec.cpp

我对这种流动感到震惊。如果有人指出如何推进它会很有帮助。

谢谢。

0 投票
0 回答
446 浏览

c++ - Android MediaPlayer / Stagefright 从 RTSP 服务器读取 SDP 崩溃

我正在尝试使用 Android 的 MediaPlayer 类来播放 RTSP 流。MediaPlayer 调用一个名为 stagefright 的本地库来实现这一点。该库和整个媒体框架因以下错误而崩溃:

所以似乎很明​​显错误是什么 - 断言在nalType应该是 7 时失败,但结果却是 22。我不明白为什么会这样。对于上下文,RTSP 流的 SDP 包含一个属性sprop-parameter-sets,它是一组 base64 编码的字节。nalType似乎是指 base64-decoding 结果的第一个字节sprop-parameter-sets。在本例中,这是 base64 编码的版本:

解码后,应该是这样的:

以下是来自 Android 4.4 源代码的相关摘录APacketSource.cpp

第一个字节 0x67 在被屏蔽后应该计算为 0x07。不知何故,它的值是 0x16。我不知道为什么会这样,尽管我怀疑nal->data().

我可以提供打印到日志的堆栈跟踪,但它非常大,我不确定它是否相关。为什么这个断言失败了?

0 投票
1 回答
769 浏览

android - 在 Jelly bean 4.1.1 划艇 DM3730 中启用硬件编码器

请执行我有关该问题的更长描述。

我有一个带有 DM3730 处理器的定制板,并从

目标: 启用硬件解码器。

2.1) 为此,我需要 OMAX-IL 接口。因此查看了从 TI 下载的源代码。但是我在hardware/ti/下找不到 代表 OMX 实现的 omap3/ 目录。

2.2)因此从AOSP果冻豆代码下载:

2.3)根据 https://source.android.com/devices/media.html

2.4) 更改了media_codec.xml以保留以下条目:

2.5)根据[注:我用最新的] IE:DVSDK构建DSP

首先想,想确认一下是否是正确的做法?或者我需要注意哪些其他基础?

我击中了哪里?

失败在

3.2 使用媒体播放器播放高清视频。下面是logcat。

我试过#dspexec -v

查看 libdspbridge 的代码后,它打开设备文件 /dev/dsplink,并枚举设备 [我不确定它在做什么],但由于向设备发送 ioctl,枚举失败。

http://androidxref.com/4.1.1/xref/hardware/ti/omap3/dspbridge/libbridge/dsptrap.c

DSPTRAP_Trap 将 dwResult 返回为 -1 。

请指出我的问题在哪里?

更新:

发现:

1) dsp-bridge, dsp-link 两个驱动程序都不同,以及为 dsp-link 构建的 DSP,我正在尝试使用 dsp-bridge。

0 投票
1 回答
1609 浏览

android - OpenCore 和 Stagefright 的区别

我的理解:

1) OpenCore/Stagefright两者都是Android中的多媒体框架。

2)OpenCore被替换为Stagefright.

我不明白的是?

我在哪里可以找到诸如哪个版本支持哪个媒体框架之类的信息?

例如:我不确定 Jelly Bean 是否同时支持OpenCoreStagefright

请帮忙!!!

0 投票
1 回答
2901 浏览

android - 表面记录:颜色格式问题

我目前正在尝试Surface通过命令行screenrecord实用程序记录一个。根据实现,框架将video encoder组件的颜色格式设置为OMX_COLOR_FormatAndroidOpaque. 因此,video encoder被迫从gralloc句柄中检索颜色格式。

执行此用例时,video encoder遇到BGRA Surface. 因此,我试图找到答案的问题是:

在 Miracast 的情况下,编码器的输入是通过SurfaceMediaSource. 在记录的情况下,通过接口提供Surface输入表面。MediaCodecGraphicBufferSource

应该在内部处理从空间RGB到空间的颜色转换,还是更好地引入编码器的源抽象源?YUVvideo encoderSurfaceMediaSourcegralloc

0 投票
2 回答
1558 浏览

android - 如何在android上将相机帧编码为mp4

我从640x480 (对我来说足够)的 android 相机中获取相机预览帧,并对它们进行一些修改。但现在我需要将它们编码为新MP4文件(带音频)。

这怎么可能?由于许可证不太好,我无法使用ffmpeg,但我找到Stagefright了应该能够做到这一点的框架。但是我没有找到任何官方文档或教程来做我需要做的事情。

请问有没有办法用这个框架做到这一点?我不需要代码,我会很高兴为我指出正确的方向。

0 投票
0 回答
210 浏览

android - StagefrightRecorder.so 的 Android.mk 文件在哪里

我正在使用 Android 4.4.2 源代码。

编译源代码后,我注意到StagefrightRecorder.soout 文件夹中有文件。我现在正在学习StagefrightRecorder.cpp,我打算重写它。所以我想知道 . 的Android.mk文件在哪里StagefrightRecorder.so。(我不熟悉源代码,所以我认为这Android.mk可能会有所帮助。)

StagefrightRecorder.cpp和都StagefrightRecorder.h在文件夹中frameworks/av/media/libmediaplayerservice。该文件夹中有一个Android.mk 文件,但该文件用于创建libmediaplayerservice模块,它调用LOCAL_SHARED_LIBRARIES StagefrightRecorder.

有人知道吗?谢谢!

0 投票
1 回答
632 浏览

android - [Android]为什么我们还可以使用MediaRecorder的setOutputFile(String path)?

我正在尝试提取的muxer部分MediaRecorder,所以我现在正在学习Android 4.2.2的源代码,无论如何,这并不重要。我在这里有一个问题。大约setOutputFile(String path)MediaRecorder.java.

的调用结果MediaRecorder.java

但在 中StagefrightRecorder.cpp,它说

那我们怎样才能继续使用setOutputFile(String path)MediaRecorder?我真的不明白。