美文网首页
将输出的RBGA数据显示在surface上

将输出的RBGA数据显示在surface上

作者: 贝克街的猫大哥呀 | 来源:发表于2018-07-10 13:53 被阅读0次

    上面已经用ffmpeg将YUV420P格式转为了RGBA,现在将其显示在surface上。

    首先在android中写入一个自定义控件,继承自GLSurface. 并实现其接口,然后将控件写入某activity的XML中,运行时就会加载:

    可以看出,当surfaceCreated执行时,就会调用run方法,执行JNI中的open方法。

    这里注意,在c++中需要引入新的头文件:

    在cmake中,也要在target_link_libraries中引入android 这个包:

    这里要注意,如果是用快捷键在c++生成了open方法,一定要注意 extern "c" ,自动生成的时候,可能没有这个东西,会报错。

    好了,其它代码都跟以前说的差不多。关键是将从java传入C++的surface关联起来,此段代码在读帧前执行即可:

    那哪里才显示呢?肯定是要将视频象素从YUV转为RGBA之后,才显示嘛,如下:

    从箭头开始处为显示内容。因为nwin已经与surface关联,这样,就将解码后的数据与java层的surface关联起来了。  

    这样,就能显示画面在android上面了。

    相关文章

      网友评论

          本文标题:将输出的RBGA数据显示在surface上

          本文链接:https://www.haomeiwen.com/subject/qaazuftx.html