【问题标题】:Getting frames from SurfaceView and decode in H264 with mediacodec从 SurfaceView 获取帧并使用 mediacodec 在 H264 中解码
【发布时间】:2023-03-22 23:46:01
【问题描述】:

目前我正在使用来自索尼运动相机开发者的示例应用程序。此示例应用程序连接到运动相机并使用 HTTP 数据包获取图像。这些图像位于 HTTP 的有效负载中,我可以在 SurfaceView 上绘制它们。我要做的是从 SurfaceView 获取帧并将它们编码为 H264。我正在阅读它可以通过 MediaCodec 完成,但我有点困惑,文档没有解释太多。这里有任何 Mediacodec 专家可以帮助我吗?

【问题讨论】:

  • 这里有各种例子:github.com/google/grafika
  • 嗨 Fadden,哪个示例对我最有帮助?我还看到很多 GLSurfaceView,我正在使用 drawBitpmap 在画布上绘图。我是否必须将我的 SurfaceView 切换到 GL 或者我仍然可以使用它?泰
  • 你不要在SurfaceView上画图,然后再从SurfaceView中提取。您绘制两次,一次到 SurfaceView 进行显示,一次到 MediaCodec 输入 Surface。 Grafika 中只有一项活动使用 GLSurfaceView,尽管它可能是最相关的一项,这很不幸,因为 GLSurfaceView 会混淆事物。然而,GLSurfaceView 只是 SurfaceView 的一个封装函数——您可以使用 GL 或 Canvas 在任何 Surface 上绘制(但不能同时使用两者)。您将能够通过 GL 渲染获得更高的帧速率;不确定这对你的工作是否重要。
  • 场景是:Sony Camera liveView -> 智能手机解码并使用画布在 SurfaceView 上渲染 liveView(它还不是 h264)-> 智能手机使用 mediacodec 在 h264 中编码,并将编码流提供给客户端 RSTP将发送到 wowza

标签: android surfaceview h.264 android-mediacodec sony-camera-api


【解决方案1】:

您可能想尝试英特尔 INDE Media for Mobile,它具有 GLCapture 类,可以接受纹理、对其进行编码和打包以进行流式传输,它具有内置流式传输到 WOWZA 服务器

教程在这里:https://software.intel.com/en-us/articles/intel-inde-media-pack-for-android-tutorials

样本在 github:https://software.intel.com/en-us/articles/intel-inde-media-pack-for-android-tutorials

有一些用于游戏捕获的示例,但应该很容易将其更改为从绘制游戏场景切换到从相机到纹理的应对位图。

【讨论】:

  • 太棒了!如果您对 M4M 有更多问题或有反馈\建议,请随时写信至 m4m@intel.com
【解决方案2】:

请浏览[this][1]的EncodeDecodeTest.java

[1]:http://bigflake.com/mediacodec/ 和 [grafica] [1]

[1]: https://github.com/google/grafika ,这将帮助你做到这一点。通常索尼设备有一些你必须注意的颜色格式问题

【讨论】:

    猜你喜欢
    • 2014-02-06
    • 2018-10-17
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 2013-09-22
    • 1970-01-01
    • 2014-01-04
    • 2014-10-25
    相关资源
    最近更新 更多