草庐IT

Stagefright

全部标签

android - 在 Jelly Bean 之前在 Android 中针对 H.264 的硬件加速视频解码

我正在从事一个视频session项目。我们使用软件编解码器对视频帧进行编码和解码,这对于较低的分辨率(最高320p)来说效果很好。我们计划支持我们的应用程序以达到720p的更高分辨率。我开始知道硬件加速可以很好地完成这项工作。由于硬件编解码器api媒体编解码器从JellyBean开始可用,我用它进行编码和解码并且工作正常。但是2.3支持我的应用程序。所以我需要为720p30fps的H.264帧进行硬件加速视频解码。在研究中,我想到了通过修改怯场框架来使用OMX编解码器的想法。我读到H.264的硬件解码器从2.1开始可用,编码器从3.0开始可用。我已经阅读了该站点中提供的许多文章和问题,

android - native 窗口 queueBuffer 函数不呈现 Stagefright 解码器的输出

我将一个SurfaceView表面从Java传递到JNI,在那里我从该表面获取native窗口。Stagefright从mp4文件解码h264帧。在解码过程中,我调用ANativeWindow::queueBuffer()以发送要渲染的解码帧。解码或调用queueBuffer()时都没有错误,我得到的只是黑屏。我真的觉得我没有正确设置native窗口,以便在调用queueBuffer()时将其呈现到屏幕上。但是,我可以直接通过memcpy将像素渲染到native窗口。不幸的是,在我实例化OMXClient之后,尝试手动绘制像素时发生了段错误,因此看来我必须使用queueBuffer()

android - 在 android 中为 MPEG 2 TS 创建一个解复用器

我有一个要求,需要从MPEG2TS(HLSSTREAM)中提取ID3标签。MPEG2在播放文件方面在Android中的支持有限。但我关心的是提取ID3标签(不需要播放文件)。因此我不关心编解码器(编码和解码)。我探索了以下选项:libstagefrightandOpenMax:Google从Android2.0开始实现的播放引擎。它有一个MediaExtractor负责从底层文件系统或http流中获取轨道数据和相应的元数据。但是根据这篇文章AddingvideocodectoAndroid我需要构建我自己的固件或我自己的媒体播放器。我希望我不必走那条路。可以在此处找到有关stagefr

android - 如何创建怯场插件

我的任务涉及将视频解码器集成到Stagefright(Android的多媒体框架)中。我搜索并找到了以下有关为Stagefright创建新插件的内容:要添加对新格式的支持,您需要:如果容器尚不支持,请开发一个新的Extractor类。开发一个新的解码器类,实现StageFright核心读取数据所需的接口(interface)。在kDecoderInfo数组中的OMXCodec.cpp文件中,将要读取的文件的mime类型关联到您的新解码器。staticconstCodecInfokDecoderInfo[]={{MEDIA_MIMETYPE_AUDIO_AAC,"OMX.TI.AAC.d

适用于 H264 流的 Android 硬件加速视频解码器

我正在开发用于解码实时H264AnnexB流的Android硬件加速视频解码器。经过一番研究,似乎我需要亲自动手才能做到这一点。我遇到了几个关键字,如OMXCodec、Android的操作系统stagefright和ffmpeg的stagefright、MediaCodecAPI、GStreamer。我也开始知道-硬件不可知的实现无法支持所有供应商的硬件。在这个阶段,所有这些都让我感到困惑,因为我没有找到任何直接的资源来推进其中任何一个。我的要求是-Android硬件加速视频解码器至少支持高通的骁龙、三星的Exynos和Tegra实现必须在本地C/C++层(而非Java层)Androi

android - GingerBread 上的 MediaPlayer Framework 和 Apple 的 HTTP Live Streaming 支持

根据发行说明,StageFright取代了GingerBread版本中的OpenCore框架。好像有很多讨论说:苹果的HTTPLivestreaming是从Android2.3开始默认支持的。即使是Wikipedia提到这个。但是,当我尝试运行teststream由Apple使用与API演示bundle在一起的MediaPlayerDemo_Video.java提供我得到了以下异常(exception)情况:setDataSource('http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8')con

android - 自定义包装器编解码器集成到Android中

我需要开发一个自定义的“包装器”视频编解码器,并将其集成到android中(目前是jb,稍后是ics)。我们想使用一些来自SIM卡的自定义解密密钥(不要问!)。最好的方法(这将允许它与其他非加密媒体一起工作,并使用标准媒体播放器或其他)似乎是定义我们自己的mime类型,并将其链接到可以进行自定义解密的自定义包装编解码器,然后将数据传给真正的编解码器。(假设现在文件类型是.mp4。)(另一种选择可能是编写自己的媒体播放器,但我们不想走这条路,因为我们真的希望媒体与其他媒体无缝地共存)我一直在试着遵循这个指南:howtointegrateadecoderintomultimediafram

android - 如何从 Android Gingerbread 中的 libmedia_jni 访问自己的 libmediaplayerservice 库

默认情况下,androidGigerbread2.3使用PV_Player(opencore库)。我找到了一个解决方案,它应该修补系统build.prop文件,但我不想修补系统。我想使用将使用StageFright播放器的android媒体框架工作创建我自己的库。我知道libmediaplayerservice决定播放器的选择。看看mediaframework我想根据android框架创建库-libmedia_jni_ownlibmedia_ownlibmediaplayerservice_own但问题是libmedia不直接与libmediaplayerservice库交互,它不直接

android - FFMpeg Android Stagefright SIGSEGV 错误(h264 解码)

我需要在Android2.3+上将h264文件解码为YUV。据我所知,我需要与Stagefright沟通,因为这是现在关闭对OpenMAXIL实现的访问后的唯一方式。对于这个问题,我使用了FFmpeg0.10(并尝试了0.9/0.9.1..),用NDK7编译了它(也尝试了NDK6b,结果相同):ffmpegversion0.10Copyright(c)2000-2012theFFmpegdevelopersbuiltonJan28201214:42:37withgcc4.4.3configuration:--target-os=linux--cross-prefix=arm-linux

android - 可以覆盖 App 中的系统 .so 库

我必须修改AndroidMediaPlayer的HttpLiveStreaming实现。实现在stagefright库下http://androidxref.com/4.0.4/xref/frameworks/base/media/libstagefright/httplive/LiveDataSource.cpp我认为这些库将编译为libstagefright.so,它应该是Android系统的一部分。我的问题是我是否对该库进行一些更改并编译一个新的libstagefright.so。如果我在我的新应用程序中加载这个新的libstagefright.so并调用媒体播放器,它会使用我的