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

android - Android Camera onPreviewFrame 帧率不一致

我正在尝试通过相机的 PreviewCall back(onPreviewFrame) 使用 MediaCodec 对每秒 30 帧的视频进行编码。我编码的视频总是播放得很快(这是不希望的)。因此,我尝试通过设置一个 int frameCount 变量来记住它的计数来检查进入我的相机预览的帧数。我期望的是每秒 30 帧,因为我将相机的预览设置为 30 fps 预览(如下所示)。我回来的结果不一样。我调用了 onPreviewFrame 回调 10 秒,我得到的 frameCount 数只有 100 帧左右。这很糟糕,因为我期待 300 帧。我的相机参数设置正确吗?这是Android相机预览回调的限制吗?如果这是对 Android 相机预览回调的限制,

感谢您阅读并花时间提供帮助。我将不胜感激任何评论和意见。

下面是一个使用 Camera 的 onPreviewFrame 编码的视频示例:

http://www.youtube.com/watch?v=I1Eg2bvrHLM&feature=youtu.be

0 投票
0 回答
568 浏览

android - 解码期间的 MediaCodec 错误代码 -2001

由于AndroidDevelopers Google 小组不允许我在那里发帖,我希望也许这里有人可以帮助我。

以下问题:我有一个 MediaCodec 的工作实现,既作为编码器又作为解码器。我正在开发的应用程序在设备和媒体服务器之间建立呼叫,媒体服务器发送 h264 视频流。

但是,在解码此视频流期间,MediaCodec 解码器多次抛出此错误(顺便说一句,没有抛出异常,只有日志消息):

E/MFC_DEC_APP(1943): SsbSipMfcDecExe] IOCTL_MFC_DEC_EXE 失败(ret : -2001)

有谁知道这个错误是什么意思?我希望在 Android 的某个地方有某种错误代码列表或静态值,但到目前为止我找不到任何东西。

该应用程序在装有 Android 4.1.2 的三星 Galaxy Tab 上运行

由于在与 android 设备(又名 p2p)之间的调用中不会发生错误,因此它必须对媒体服务器发送的 h264 流进行处理。

该错误似乎只发生在 p 帧上。

任何帮助或建议将不胜感激。

0 投票
0 回答
1448 浏览

android - MediaCodec 解码器的奇怪行为

在我的实现中,我使用 MediaCodec 解码器按顺序逐帧解码视频,一切正常。但是,如果在开始解码过程之前我使用 MediaPlayer 和 TextureView(我使用 GLES 渲染的扩展 TextureView)播放一些媒体,第四个解码器将无法正常运行,例如当 outputFormat 更改时,它会为编解码器返回错误的颜色格式而前三个解码器工作正常。我知道它主要取决于硬件,但任何想法都会特别感谢它与 MediaPlayer 的关系。

ps:在开始解码之前,我确实释放并清理了 MediaPlayer 实例。

编辑:

该设备是三星 Note3,我正在播放常规媒体。当它失败时,即使我等待几分钟或强制停止活动并重新运行它,除非我重新启动设备,否则行为仍然存在。您可以在以下日志中看到预期的颜色格式是“QOMX_COLOR_FORMATYUV420PackedSemiPlanar32m”。

失败前:

失败后:

0 投票
0 回答
1230 浏览

android - Youtube javascript api iframe 在 android 上播放 - 没有音频

此问题仅在(Nexus 7 上的 4.3/4.4 上的 4.3/4.4)上播放 youtube iframe。我去任何在 Iframe 中嵌入 YT 播放器的媒体网站,但没有播放声音。播放器将启动并显示控件,但没有声音。logcat 消息是:

jsfiddle 来重现错误 或只是去任何嵌入 Youtube 剪辑的媒体门户......这个链接在我的笔记本电脑和手机上都很好。它只是我见过错误的N7。

解决方法 - 使用 Chrome Beta 作为浏览器。但是,如果重点放在适合平板电脑的媒体繁重的环境上,那实际上就行不通了。

我的问题:它是 Chrome 问题还是只是 nexus 7 问题?

--编辑有问题的“菜”中的示例 iframe:

0 投票
1 回答
475 浏览

android - 使用 MediaCodec API,我每次都将 OutputBufferIndex 设为 -1。任何可能的解决方案?

0 投票
1 回答
1606 浏览

android - Android MediaCodec 不工作

我正在尝试直接解码 Android 设备上 Raspberry Pi 摄像头模块的 H.264 编码摄像头输出,但我的代码无法正确解码文件。我没有得到任何输出,并且作为最后一帧,我得到了一个乱码。

当我自己将输入文件(它是一个 H.264 字节流)解析为 NAL 单元时,我留下了一个问题:当将它们提供给 MediaCodec 缓冲区时,我是否将 NAL 单元分隔符作为出色地?

0 投票
0 回答
390 浏览

android - 无法在 Android 平板电脑上使用 MediaCodec 进行常量编码

我正在尝试将 MediaCodec 用于三星平板电脑 GT-P5100 上的硬件编码器。但我只能得到几帧。预览可以得到恒定的视频信息并显示出来,但在几帧之后编码器功能出现问题。

这是日志

我的部分代码如下:

和编码器功能:

有人知道吗?谢谢!

0 投票
0 回答
1086 浏览

android - 媒体编解码器的 readSampleData () 在恢复后给出分段错误

我正在使用 mediacodec 和 mediaextractor 播放编码视频。现在我正在尝试为播放器实现暂停和恢复。这是我的播放器线程运行方法的代码

所有使用的变量都是全局声明的。

这是我使用按钮暂停和恢复的代码

只会启动解码器。当我按下 holdButton 时它会暂停,但是当再次按下它时它应该恢复,但是在恢复时

这条线给出了分段错误。有时在按下holdButton暂停时也会出现。

我无法弄清楚问题所在。

请帮忙....................

谢谢...

这是我恢复后的 logcat 信息。

我无法理解其中的原因......

0 投票
1 回答
5327 浏览

android - 将 MediaCodec 解码的视频帧绘制到屏幕上的最快方法是什么?

我正在寻找从 MediaCodec 解码器接收到的图像帧并将其绘制到 Android 设备屏幕的最快方法。重要的限制和解释是:

  1. 无法使用媒体播放器。不允许中间应用。

  2. 必须尽快将来自 MediaCodec 解码器的输出帧绘制到屏幕上(最小化延迟)。

  3. 可用的解码器输出格式如下:
    ColorFormat[0] 0x00000013 COLOR_FormatYUV420Planar
    ColorFormat[1] 0x00000015 COLOR_FormatYUV420SemiPlanar
    ColorFormat[2] 0x7F000001 OMX_SEC_COLOR_FormatNV12TPhysicalAddress
    ColorFormat[3] 0x7FC00002 OMX_SEC_COLOR_FormatNV12Ti

  4. 视频分辨率以及每个输出帧的分辨率为 960x720。

  5. 目标平台是 Galaxy Note II,并且该方法可以特定于该平台(例如,利用可用的硬件功能)。这不需要在其他平台上工作或成为通用解决方案。

花费少于 66 毫秒的方法会很好。少于 33 毫秒会很棒。我目前的方法需要 80-90 毫秒,这很糟糕。(我不会费心去描述它,因为我不想让答案偏向任何特定的方向。)

0 投票
2 回答
6816 浏览

android - Unity 中的屏幕录像机 Android 插件

我正在开发一个 Unity-Android 插件来录制游戏屏幕并创建一个 mp4 视频文件。我遵循此站点中的 Android Breakout 游戏录制器补丁示例:http: //bigflake.com/mediacodec/
首先,我创建了扩展 UnityPlayer 类并覆盖 onDrawFrame 方法的 CustomUnityPlayer 类。这是我的 CustomUnityPlayer 类代码:

然后,我创建了一个 CustomUnityPlayerActivity 来调用这个类

我的问题是视频文件创建成功,但我的游戏无法渲染任何内容。我在Android Media Codec 示例网站上阅读并认识到每一帧将被渲染两次(一次用于显示,一次用于视频)但我可以不要在 Unity 中执行此操作。每当我尝试在 onDrawFrame 方法中调用 super.onDrawFrame(gl) 两次时,我的游戏都会崩溃。

我的问题有什么解决方案吗?任何帮助将不胜感激!

谢谢和最好的尊重!

Huy Tran