jjzjj

MediaCodec

全部标签

android - Mediacodec 果冻 bean

我正在为jelly-bean上的.mp4文件使用媒体编解码器并在logcat中获取它02-2712:12:13.645:A/ACodec(6760):frameworks/av/media/libstagefright/ACodec.cpp:1041CHECK(def.nBufferSize>=size)failed.02-2712:12:13.645:A/libc(6760):Fatalsignal11(SIGSEGV)at0xdeadbaad(code=1),thread6778(CodecLooper)谁能告诉我这是什么?以及如何解决? 最佳答案

android - MediaCodec 是否始终提供 16 位音频输出?

我正在使用Android的MediaCodec类从音频文件中读取原始数据。效果很好。问题是我不知道假设输出数据总是16位是否安全?我可以通过实验判断输出是16位,但我不知道如何在运行时检查它。MediaCodec文档似乎没有告诉我。MediaFormatKEY_CHANNEL_MASK可以告诉我,但MediaCodec似乎没有设置这些标志。它设置采样率和mime类型,但没有任何内容可以明确告诉我位大小。我想考虑到后续block的呈现时间和采样率之间的差异,我应该能够计算出它,但这似乎不太令人满意。有没有办法告诉我,或者它写在我不需要的地方? 最佳答案

android - 使用 MediaCodec 和 MediaExtractor 对视频进行解码编码

我需要将视频解码为一系列位图,以便我能够修改它们,然后将它们压缩回android中的视频文件。我计划通过使用getFrameAtTime并将其保存到图像序列中来管理它。然后我可以修改序列中的图像并将其编码回电影。但是我有两个问题:首先,据我所知,getFrameAtTime用于创建缩略图,不能保证返回正确的帧。这会导致视频延迟。其次,保存图像和读取它需要很长时间。我读到进行解码的正确方法是使用MediaExtractor,这很好,但我只有将其直接渲染到surfaceView的示例。有什么方法可以将outputBuffer转换为位图吗?我需要它才能在16及以上的API级别上工作。

android - 如何初始化 MediaFormat 以配置 MediaCodec 来解码原始 AAC 数据?

我的StreamPlayer有一个奇怪的问题,我需要任何帮助。我需要实现的主要目标是StreamPlayer,它能够以尽可能小的延迟播放MPEG-2传输流。为此,我遵循这种方法:流由基于Java的TS解析器解析。我已经实现了一个TSExtractor,它类似于MediaExtractor,并且工作正常。我可以接收选定轨道的所有媒体样本,就像使用MediaExtractor和extractor.readSampleData(...);extractor.advance();要解码AAC数据,我想创建和配置MediaCodec的实例。使用MediaExtractor类,这通常由MediaF

android - 使用 renderscript 进行处理,使用 mediacodec 进行编码

我正在尝试开发一个相机应用程序,在录制视频之前进行一些视频处理。我决定使用Rendrscript进行处理,因为它提供了许多我想使用的操作。我想使用MediaCodec进行编码。我找到了一些展示如何使用GLES进行处理的示例(包括Grafika),但我还没有找到展示如何使用RenderScript进行处理的示例。尝试用Renderscript替换GLES我有以下问题:我从编码器输入表面创建RenderScript输出Allocation。在Grafika示例中,EGLswapbuffer()用于将缓冲区发送到编码器。Allocation.ioSend()做同样的事情吗?在EGL中,set

android - MediaCodec 的 presentationTimeUs 有什么用?

presentationTimeUs的官方定义在queueInputBuffer(intindex,intoffset,intsize,longpresentationTimeUs,intflags)是以下内容:Thepresentationtimestampinmicrosecondsforthisbuffer.Thisisnormallythemediatimeatwhichthisbuffershouldbepresented(rendered).如果由应用程序决定何时呈现解码图像,为什么解码器需要这个?我为presentationTimeUs尝试了一些任意数字,它们似乎对解码没

Android MediaCodec API 视频播放速度太快

我目前正在使用AndroidJellyBeanMediaCodecAPI开发一个简单的视频播放器。我在单独的线程中提取轨道、播放音频和视频。问题是视频轨道总是播放得太快。问题可能隐藏在哪里?音频和视频的处理方式几乎相同,除了音频是通过AudioTrack播放的,而视频是渲染到表面上的。 最佳答案 如果您以最大速度渲染帧,您将在大多数设备上达到60fps。您需要根据编码器提供的呈现时间戳对其进行调整。例如,如果输入是Android支持的格式(例如典型的.mp4文件),您可以使用MediaExtractor类来提取每一帧。可以使用get

android - 如何在android平台上进行硬件h.264视频编码

我正在尝试做硬件h.264视频编码平台,我了解到“MediaCodec”似乎支持硬件视频解码,但它支持硬件视频编码吗?Google的一些搜索结果建议我应该考虑根据用户的Android设备为不同的芯片搜索不同的解决方案,这是否意味着我应该去每个芯片提供商的网站搜索不同的解决方案?谢谢你的建议 最佳答案 MediaCodec类还支持视频编码。MediaCodec类专门为多设备硬件加速媒体处理而设计,因此相同的代码可以在每个设备上运行(根据经验我可以告诉你它不会)有关此主题的好读物:http://developer.android.com

java - 如何读取 3gp/AMR-NB 音频格式的原始值?

在我的Android应用程序中,我正在录制用户的声音,并将其保存为.3gp编码的音频文件。我想做的是打开它,即表示音频样本的序列x[n],以便执行一些音频信号分析。有人知道我该怎么做吗? 最佳答案 您可以使用AndroidMediaCodec解码3gp或其他媒体文件的类。解码器输出是标准PCM字节数组。您可以直接将此输出发送到AndroidAudioTrack类进行播放或继续使用此输出字节数组进行进一步处理,例如DSP。要应用DSP算法,必须将字节数组转换为浮点/double组。获取字节数组输出有几个步骤。总而言之,它看起来如下:实

java - 如何将 MediaMuxer/MediaCodec InputSurface 与 GLSurfaceView 一起使用?

在BigFlake之后例如,有一条评论指出://Acquireanewframeofinput,andrenderittotheSurface.Ifwehada//GLSurfaceViewwecouldswitchEGLcontextsandcalldrawImage()asecond//timetorenderitonscreen.Thetexturecanbesharedbetweencontextsby//passingtheGLSurfaceView'sEGLContextaseglCreateContext()'sshare_context//argument.我使用EGL