缓冲表面输入到MediaCodec

德宝

已经演示了如何使用CameraPreview之类的Surface输入馈送MediaCodec,但是在提交到该输入之前是否有缓冲此输入的实用方法MediaCodec

在我的实验中,Galaxy Nexus在CameraToMpegTest.java中使用直接,同步编码方法来产生音频/视频流时遇到了不可接受的问题

当使用MediaCodecwithbyte[]ByteBufferinput时,ExecutorService即使设备的CPU使用率超出了我们的应用程序控制,我们也可以将未编码的数据提交到一个或类似的队列进行处理,以确保不会丢失任何帧。但是,由于需要在Android的Camera和MediaCodec之间执行颜色格式转换,因此该方法对于高分辨率的实时视频是不现实的。

想法

  1. 有没有办法将NativePixmapType创建的内容提供EGL14.eglCopyBuffers(EGLDisplay d, EGLSurface s, NativePixmapType p)MediaCodec

  2. Android上的任何人都可以评论路线图上是否在Camera和MediaCodec之间协调ByteBuffer格式吗?

淡淡的

您真的根本不想复制数据。分配存储空间并复制大量数据可能会花费足够长的时间来破坏帧速率。这通常排除了byte []和ByteBuffer []解决方案,即使您不必进行U / V平面交换也是如此。

在系统中移动数据的最有效方法是使用Surface。诀窍是,Surface不是缓冲区,它是缓冲区队列的接口缓冲区通过引用传递;当您unlockCanvasAndPost()实际上将当前缓冲区放入使用者的队列时,通常是在不同的过程中。

没有创建新缓冲区并将其添加到队列使用的集合或从队列中提取缓冲区的公共机制,因此您无法在一侧实现DIY缓冲区方案。没有公共接口可以更改池中的缓冲区数量。

知道是什么引起了打ic,这将很有用。用于分析此类问题的Android工具是systrace,可在Android 4.1+中使用(docsexamplebigflake example)。如果您可以确定CPU负载的来源,或者确定它不是CPU,而是纠结了一些代码,那么您将拥有比向Surface增加更多缓冲区容易得多的解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

解码器的输出表面如何传递到编码器的输入表面?

来自分类Dev

将emacs shell输入列表复制到缓冲区或文件

来自分类Dev

VHDL-BCD到二进制输入缓冲区-显示结果的问题

来自分类Dev

TarArchiveInputStream是缓冲的还是未缓冲的输入流?

来自分类Dev

XNA-表面-跟踪触摸输入

来自分类Dev

C#表面设备和压力输入

来自分类Dev

C#表面设备和压力输入

来自分类Dev

为表面曲率计算提供正确的输入

来自分类Dev

Android捕获屏幕到ImageReader的表面

来自分类Dev

FFMPEG帧到DirectX表面硬件的加速

来自分类Dev

手动绘制到MediaPlayer的表面

来自分类常见问题

使用tensorflow lite micro ESP32将输入复制到CNN的缓冲区中

来自分类Dev

(DirectX 11)单个顶点缓冲区可以一次绑定到多个IA输入插槽吗?

来自分类Dev

使用tensorflow lite micro ESP32将输入复制到CNN的缓冲区中

来自分类Dev

JFileChooser映像到缓冲的映像

来自分类Dev

Android MediaCodec解码器输入/输出帧数

来自分类Dev

带有Surface输入的MediaCodec:生成分块输出

来自分类Dev

Android MediaCodec解码器输入/输出帧数

来自分类Dev

运行Traceview方法概要分析时,MediaCodec不返回缓冲区

来自分类Dev

从AVPacket向MediaCodec提供字节数据:输出缓冲区出现问题

来自分类Dev

C语言中的缓冲和非缓冲输入

来自分类Dev

安全播放:在MediaCodec中观察到崩溃

来自分类Dev

从一个表面绘制到另一表面

来自分类Dev

为什么BufferedReader不缓冲输入?

来自分类Dev

可以缓冲标准输入或文件的程序

来自分类Dev

Bash:缓冲整个标准输入,然后输出

来自分类Dev

MKAnnotationView是否缓冲其输入队列?

来自分类Dev

可以缓冲标准输入或文件的程序

来自分类Dev

Python:清除标准输入缓冲区

Related 相关文章

  1. 1

    解码器的输出表面如何传递到编码器的输入表面?

  2. 2

    将emacs shell输入列表复制到缓冲区或文件

  3. 3

    VHDL-BCD到二进制输入缓冲区-显示结果的问题

  4. 4

    TarArchiveInputStream是缓冲的还是未缓冲的输入流?

  5. 5

    XNA-表面-跟踪触摸输入

  6. 6

    C#表面设备和压力输入

  7. 7

    C#表面设备和压力输入

  8. 8

    为表面曲率计算提供正确的输入

  9. 9

    Android捕获屏幕到ImageReader的表面

  10. 10

    FFMPEG帧到DirectX表面硬件的加速

  11. 11

    手动绘制到MediaPlayer的表面

  12. 12

    使用tensorflow lite micro ESP32将输入复制到CNN的缓冲区中

  13. 13

    (DirectX 11)单个顶点缓冲区可以一次绑定到多个IA输入插槽吗?

  14. 14

    使用tensorflow lite micro ESP32将输入复制到CNN的缓冲区中

  15. 15

    JFileChooser映像到缓冲的映像

  16. 16

    Android MediaCodec解码器输入/输出帧数

  17. 17

    带有Surface输入的MediaCodec:生成分块输出

  18. 18

    Android MediaCodec解码器输入/输出帧数

  19. 19

    运行Traceview方法概要分析时,MediaCodec不返回缓冲区

  20. 20

    从AVPacket向MediaCodec提供字节数据:输出缓冲区出现问题

  21. 21

    C语言中的缓冲和非缓冲输入

  22. 22

    安全播放:在MediaCodec中观察到崩溃

  23. 23

    从一个表面绘制到另一表面

  24. 24

    为什么BufferedReader不缓冲输入?

  25. 25

    可以缓冲标准输入或文件的程序

  26. 26

    Bash:缓冲整个标准输入,然后输出

  27. 27

    MKAnnotationView是否缓冲其输入队列?

  28. 28

    可以缓冲标准输入或文件的程序

  29. 29

    Python:清除标准输入缓冲区

热门标签

归档