问题标签 [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 投票
4 回答
1516 浏览

android - Android MediaCodec dequeOutputBuffer 总是返回 -1

我正在使用新MediaCodec API的 onJelly Bean解码一个h264 stream. 使用开发人员页面中的代码片段,按名称(取自 media_codec.xml)实例化解码器,传递表面并配置编解码器。

我面临的问题是,dequeOutputBuffer 总是返回 -1
尝试使用负超时无限等待,但没有运气。
每当我得到 -1 时,使用 getOutputBuffers 刷新缓冲区。

请注意,当使用自定义应用程序解析来自媒体源的数据并提供给解码器时,会出现同样的问题。

上述任何输入都会有所帮助

0 投票
1 回答
2520 浏览

android - Android MediaCodec API 视频播放太快

我目前正在使用 Android Jelly Bean MediaCodec API 来开发一个简单的视频播放器。

我提取曲目,在单独的线程中播放音频和视频。问题是视频轨道总是播放得太快。

问题可能隐藏在哪里?
音频和视频的处理方式几乎相同,除了通过 AudioTrack 播放音频和将视频渲染到表面。

0 投票
1 回答
860 浏览

android - MediaCodec:如何测试/播放编码器的输出。?

我是android开发的新手。我正在尝试为在 jellybean 版本上运行的 android 手机编写一个视频压缩器应用程序。我正在使用 MediaCodec API。

以下是我为启动解码器和编码器所做的初始设置。我按照文档进行了编码和解码。但是我得到的输出不能通过简单地双击来播放。谁能建议我一种方法来检查输出以查看它是否有效。?

我真的被困在这里了。请帮帮我。

提前致谢 :)

0 投票
1 回答
12327 浏览

android - Android MediaCodec AAC 编码器

我使用MediaCodec自 API 级别 16 以来 Android SDK 提供的类和OMX.SEC.aac.enc编码器将音频编码为文件。我从AudioRecord课堂上得到音频输入。我的类实例AudioRecord配置如下:

我能够播放AudioRecord实例中的原始数据,所以问题不存在。

AudioRecord我将实例的输出写入ByteBuffer实例,并将其从编码器传递到可用的输入缓冲区。编码器的输出被写入 SD 卡上的文件。

这些是我的MediaCodec实例的配置参数:

VLC 告诉我我的 aac 文件中没有流。该命令FFMPEG -i @filename@给了我以下错误:Invalid data found when processing input。我测试的所有媒体播放器都无法播放我的文件。

为什么我无法播放我的文件?我没有收到任何OpenMAX错误,LogCat并且应用程序在编码时不会崩溃。我写了一个基于相同原理工作的视频编码器,它可以工作。

这是将数据从AudioRecord实例读取到缓冲区的代码:

我的编码器中的 add 函数将一个缓冲区的内容复制到另一个缓冲区:

以下代码用于占用编码器的输入缓冲区:

我将编码器的输出写入本地文件,如下所示:

0 投票
2 回答
4786 浏览

android - 通过 MediaCodec API 让 QualComm 编码器工作

我正在尝试使用 Android MediaCodec API 对 NV12 流进行硬件编码(avc)。

使用 OMX.qcom.video.encoder.avc 时,分辨率 1280x720 和 640x480 可以正常工作,而其他分辨率(即 640x360、320x240、800x480)会产生色度分量似乎发生偏移的输出(请参阅快照)。

我通过将输入图像保存到 jpeg 文件来仔细检查输入图像是否正确。此问题仅发生在 QualComm 设备(即三星 Galaxy S4)上。

任何人都可以正常工作吗?需要任何额外的设置/怪癖吗?

0 投票
1 回答
2089 浏览

android - Android MediaCodec 3gpp 编码器输出缓冲区包含不正确的字节

我正在尝试将来自 MIC 的音频流编码为 3gpp (AMR-NB)。问题是输出缓冲区包含奇怪的数据。代码和输出如下:

创建媒体编码器:

来自 MIC 的 PCM 数据似乎是正确的(存储到文件中,用 Audacity 收听)

读取编码字节(缓冲区,在线程中运行):

输出是:

我用谷歌搜索并没有找到任何帮助。关于 MediaCodec 使用的 Android 文档也不是很好 - 在 outputbuffer 上下文中使用 ByteBuffer.clear() 进行了大量试验和错误。

最好的问候,阿赫蒂。

0 投票
0 回答
1273 浏览

android - android.media.MediaCodec 在 queueInputBuffer() 上抛出异常

我需要将音频文件从 PCM 转换为 AMR,并尝试使用 Android API 16+ 中的 MediaCodec 进行转换。我在调用它的 queueInputBuffer 时遇到了 IllegalStateException:

这是我的代码:

我提到 inputBuffers 有 4 个元素,容量为 320,我的音频文件缓冲区可能容量为 96000+。

任何帮助将不胜感激。谢谢!

0 投票
1 回答
7357 浏览

android - MediaCodec createInputSurface

我想使用 MediaCodec 将 Surface 编码为 H.264。

使用 API 18,有一种方法可以通过调用 createInputSurface() 然后在该表面上绘制来对表面的内容进行编码。

我在 createInputSurface() 上得到 IllegalStateException。这是额外的 logcat 输出:

任何有关新 API 工作原理的见解都会有所帮助。

0 投票
1 回答
3627 浏览

android - 如何使用 MediaCodec 解码来自 RTSP 服务器的数据?

setDataSource()我在课堂上试过,MediaExtractor但它不适用于 RTSP 路径。我可以使用与类相同的路径并且它可以工作,但对我来说使用类MediaPlayer非常重要。MediaCodec我认为 Android 没有任何我可以使用的 RTSP API,也找不到任何适用于 Android 的 RTSP 库。

是否有一种相对简单的方法可以将来自 RTSP 服务器的视频流输入MediaCodec课堂?

0 投票
1 回答
1479 浏览

android - 使用 mediacodec 确定视频帧率和音频采样率

我需要了解有关我在 android 上使用 MediaCodec 解码的一些视频的以下信息: - 对于音频:采样率和通道数;- 对于视频:帧速率。我通常解码h264+aac,但解决方案应该可以扩展到其他格式。如何做到这一点?