问题标签 [android-mediacodec]

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 投票
2 回答
3228 浏览

android - How to decode H264 over RTP using MediaCodec Api in Android

Am doing a project on live video broadcasting.

On sender side, am capturing the video using an android phone, getting the H264 frames and packetising them into RTP packets following the respective RFCs ->RFC 3984. The sending side has no issues. the stream is received and played by VLC.

On the receiver side, again an android mobile. i got the RTP packets successfulyy. its a RTP stream that contains H264 Dynamic Payload. i want to unpack this stream and decode it and render it on the receiver side using android mediacodec API. Somebody please guide me on how to realise this.

thank you.

0 投票
0 回答
245 浏览

java - mediacodec 和 opencv 不匹配颜色类型

我有 2 个应用程序,1 个我使用 OpenCV 在 Matlab(c)上实现,第二个是使用 MediaCodec 在 eclipse(android,java)上实现。

我想从同一个 mp4 视频中解码第一帧(我需要超过 1 帧,我只查看第一帧以进行调试,这就是我选择 MediaCodec 和 OpenCV 的原因)。

在 Matlab 中,我这样做:

而 currFrame 是Frame[0]currGray 是灰度帧。

在 Eclipse 中,我这样做:

whileGrayIntArrayToMat是将帧转换为灰度的本机函数:

我的问题是我在两个例子中没有得到相同的颜色。如果我查看第一行的前 10 列,我会得到这个(灰度帧):

我的参考是 Matlab,所以我需要得到与他的框架相同或至少更接近的框架。

谢谢你的帮助!

0 投票
1 回答
74 浏览

java - 设置起始帧 MediaCodec

我想知道是否有办法设置我要解码的第一帧。

假设我想从第 300 帧开始,有没有办法将第 300 帧设置为第一帧?还是我需要遍历所有帧,直到达到所需的帧?

谢谢

0 投票
1 回答
5383 浏览

android - 解码音频文件并重新编码为所需的 PCM 格式:44,100 kHz,2 通道,16 位

我想将音频文件解码为原始 PCM 数据,以将其流式传输到本地网络中的播放设备。为此,我使用 API 级别 16 引入的新MediaExtractorMediaCodec类。该设备要求 PCM 数据为 44,100 kHz,具有 2 个通道和 16 位样本大小。只要输入文件大致符合这些要求,它就可以正常工作。但是,每当我解码一个 MP3 文件时,它使用 - 例如 - 32,000 kHz 的采样率并且可能只有一个通道,然后我没有从 MediaCodec 类获得所需的输出。

看来我无法指定 MediaCodec 类的输出格式。所以我决定实例化另一个 MediaCodec 对象,将原始数据重新编码成我想要的格式。根据支持的媒体格式列表, Android 自 Android 4.1 起支持编码为 PCM/Wave。但是,我无法创建编码为 PCM/Wave 的 MediaCodec 对象。我尝试将各种 MIME 类型传递给 MediaCodec.createEncoderByType(type); 但我总是因 IOException 而失败:

你们中是否有人能够成功创建一个编码为 PCM/Wave 的 MediaCodec 实例,并且可以为我提供一个工作示例?

0 投票
1 回答
3428 浏览

android - 在 Xperia Z1 上使用 MediaCodec 编码相机预览帧时视频质量不一致

我正在编码NV21来自相机预览的帧。由于某种原因,在其他设备上运行良好的架构Sony Xperia Z1Android 4.3. 它发回质量不正确(低)的编码帧。

MediaCodec的格式是COLOR_FormatYUV420SemiPlanarNV12我通过交换 U 和 V 分量转换NV21为)。NV12发回给我的输出缓冲区的大小非常小,与我正在使用的分辨率 ( ) 和比特率 ( )MediaCodec不对应。前几帧质量很好,但随后显着下降:1280x7201000000

这给了我关于 Xperia Z1 的以下日志:

正常工作的示例日志Sony Xperia ZR

任何意见,将不胜感激。

0 投票
1 回答
846 浏览

android - Android_无法播放MediaMuxer生成的mp4文件

我正在尝试使用MediaCodecMediaMux生成 mp4 文件。我使用的代码在这里

我得到一些 mp4 文件。但是,我不能用我的播放器播放它,它只是一个普通的软件。

有人知道吗?接下来我该怎么办?

0 投票
1 回答
3449 浏览

android - 如何获取 MediaCodec 编码器的步幅和 Y 平面对齐值

关于这个主题有一些相关的问题和讨论:

我正在将相机预览帧(NV21转换为NV12)提供给MediaCodec编码器(NV12又名COLOR_FormatYUV420SemiPlanar)。QualComm在一些运行 Android 版本的带有编码器的设备上,4.3我必须进行一些输入帧处理才能接收正确颜色的回帧。

Sony Xperia ZR运行时,Android 4.2.2我必须添加Y平面对齐以使其适用于几乎所有分辨率。上面的代码1024为不能被除的宽度添加了字节对齐,322048为其他分辨率添加了字节对齐。它可以MediaCodec为所有可以划分的分辨率正确编码帧16(除了176x144哪个UV平面看起来未对齐)。

我已尝试测试此对齐方式,该对齐方式LG G2运行相同Android 4.2.2且具有QualComm编码器,但看起来它无法正常工作。UV平面未对齐(框架底部的绿色条纹)。我无法计算适用于两部手机的填充。

我也可以使用芯片组Sony Xperia Z1运行,看起来它没有这样的问题。每种分辨率的视频看起来都很好,并且无论如何都不需要对齐平面。Android 4.3QualCommY

我知道它与硬件相关并且可能很复杂,但是因为在4.3我有问题之前我必须支持运行 Android 的用户。是否可以以编程方式确定Y编码器期望给定颜色格式的平面对齐和垂直/水平步幅值?

0 投票
1 回答
507 浏览

android - Android-apply patch on media codec sample

i about a a week that i am chasing my tail to run some of the examples here(media coec examples): http://bigflake.com/mediacodec/

some of them are build for CTS but can implement with some changes. I hope that i am not the only one who deal with it.

I want to ask about this patch:"Android Breakout game recorder patch "

I already loaded to game project to eclipse and can run it on my device.
But when i apply the patch through "Team->apply patch" in eclise. the patch was apply but with error of "missing files" on some of the changes.

Is anybody can help me to apply it well?

There is not git working examples yet with media codec. and any help with the setup will be great.

Many Thanks for any answer!

update : please,NEVER use cynogenMod ROM for new API development. I could not run many classes with their 4.3.1(API 18).after switch to official all run as expected

0 投票
1 回答
830 浏览

android - 有什么方法可以将我使用 opengles 1.1 渲染的游戏录制到带有 MediaCodec 的视频中?

我正在用opengles编写游戏,现在,我想在玩的时候记录一些帧。我目前的解决方案是在游戏结束后,我使用“glReadPixels”来获取我需要的部分的 RGBA 缓冲区并将 RGBA 转换为 YUV420Plan 格式或 MediaCodec 所需的其他格式,它运行良好并在某些设备上生成了 h264 流,虽然不是所有设备,因为这里有些问题。而且我注意到这是从 4.​​3 开始从 opengl 重新编码视频的另一种方法,即 mEncoder.createInputSurface(),这是一个示例。但是在将游戏渲染到它自己的 GLSurfaceView 时,我不知道如何将我的游戏渲染到这个表面。谁能给我任何建议?

0 投票
1 回答
7675 浏览

android - Mediacodec 解码器在解码 H264 文件时总是超时

我一直在尝试使用 Android 的MediaCodec解码通过H264 编码编码的视频文件,并尝试将解码器的输出放到表面上,但是当我运行应用程序时,它显示黑色表面,在 DDMS logcat 中我看到那个解码器超时

我首先将文件解析为有效[首先读取 4 个字节,指示即将到来的帧的长度,然后读取指示帧的长度数量字节,然后再次读取 4 个字节的下一帧的长度,依此类推。]然后将帧循环传递给解码器。在配置解码器时,我通过直接从编码文件中硬编码值来传递mediaFormat中的sps 和 pps [我通过使用 hexedit 打开该文件获得了这些值]。我没有设置任何presentationTimeUS,而是使用了0。现在解码器的dequeInputBuffer()方法返回 >=0 值但dequeOutputBuffer()只返回MediaCodec.INFO_TRY_AGAIN_LATER最终意味着解码器超时。

请看看我的代码,请帮助。

提前致谢。

这是文件网址 - https://drive.google.com/file/d/0B39qOyEnXlR8Z3FSb2lzTWlORUU/edit?usp=sharing

这是我的代码 -