博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MediaPlayer(android)常见问题
阅读量:6610 次
发布时间:2019-06-24

本文共 1414 字,大约阅读时间需要 4 分钟。

hot3.png

                                                   MediaPlayer常见问题
1.MediaPlayer播放视频(在emulator上),surface alloc失败的问题。

            原因: google 在ICS 上graphicbuffer管理机制做了改动, 但是gralloc.xxx.so目前又不支持HAL_PIXEL_FORMAT_YV12。所以,解决办法是:注释掉SoftwareRenderer.cpp,65行,case OMX_COLOR_FormatYUV420Planar: 播放就有视频出来了。

2.

  做过Stagefright框架支持库开发的都知道,Android专门为数据传递封装了一个类:MediaBuffer,源码路径为:

1)、头文件:frameworks/base/include/media/stagefright/MediaBuffer.h

2)、实现源码:frameworks/base/media/libstagefright/MediaBuffer.cpp

        该类专用于管理数据缓冲区,是Stagefright各组建间进行数据传递的交通工具。以解码为例,Extractor将读取到的Audio和Video数据分别放入不同的MediaBuffer中,一个传入Video decoder进行视频解码,一个传入Audio decoder进行音频解码;Video Decoder将解码后的数据放入一个新的视频MediaBuffer中,传递给Render去显示,Audio decoder将解码后的数据也放入一个新的音频MediaBuffer中送到Render去放音。当然,在传递前还有很多附加的信息需要设置传递,这里不做说明。

        下面就本人在使用MediaBuffer对其的理解是使用重点做详细说明。MediaBuffer对缓冲区的内部实现进行了很好的封装,使用者根本不需要关心里面的实现细节,而且所有我们对缓冲区关心的问题,该类都已经提供了接口。

常见数据区操作:

MediaBuffer mBuffer;

1)、获取数据缓冲区首地址:mBuffer->data( );

2)、获取数据缓冲区的大小:mBuffer->size( );

3)、获取缓冲区中有效数据区相对数据缓冲区起始地址的偏移:mBuffer->range_offset( );

4)、设置缓冲区中有效数据区的偏移和长度:mBuffer->set_range(size_t offset, size_t length);

5)、获取有效数据区的长度:mBuffer->range_length( );

6)、获取有效数据区的起始地址(偏移):mBuffer->data( ) + mBuffer->range_offset( );

易犯的错误:

1)、误用数据缓冲区首地址代替有效数据区首地址。即用mBuffer->data( )代替mBuffer->data( ) + mBuffer->range_offset( ),这样得到的是数据缓冲区的起始地址,而不一定时有效数据区的起始地址;实际使用中,有效数据区通常是数据缓冲区的一个有效子集而已。

2)、误用数据缓冲区的大小代替有效数据区的大小。即用mBuffer->size( )代替mBuffer->range_length( )

转载于:https://my.oschina.net/u/589963/blog/118336

你可能感兴趣的文章
APICLOUD 1.1.0 开发环境搭建
查看>>
《Cadence 16.6电路设计与仿真从入门到精通》——导读
查看>>
Confluence 6 如何让我的小组成员知道那些内容是重要的
查看>>
找到一个适合的分布式文件系统之各种分布式文件系统优缺点对比
查看>>
索引失效的几个原因
查看>>
五险一金,你清楚吗?
查看>>
Ip核_fifo
查看>>
repquota命令--Linux命令应用大词典729个命令解读
查看>>
rabbitmq 管理及常用命令
查看>>
HTTP要被抛弃? 亚洲诚信携手宝塔开启HTTPS加密快速通道
查看>>
6.6 tar打包
查看>>
Spring MVC核心技术
查看>>
TCP协议如何保证传输的可靠性
查看>>
Spring Cloud云架构 - SSO单点登录之OAuth2.0 登出流程(3)
查看>>
软件开发各阶段交付物列表
查看>>
ntp服务器的搭建
查看>>
六、nginx搭建织梦DedeCms网站
查看>>
Tair学习小记
查看>>
网卡绑定(服务器&&交换机),缓存服务器Squid架构配置
查看>>
web网站加速之CDN(Content Delivery Network)技术原理
查看>>