我的Android进阶之旅------>android视频播放只有声音无画面的解决办法
今天调试公司用VideoView实现的播放器来播放视频的时候,只有声音输出而无画面输出。一开始以为是自己程序有问题,调试了半天无果。怀疑是真机本身的问题,于是下了几个第三方的播放器来进行视频播放,例如:快播、暴风影音、百度视频和MoboPlayer,都是无疾而终。这更加确定了是真机解码的问题。
我的解决方法是:
1、替换了libstagefright.so库文件,因为该文件被公司的底层人员修改过来适应公司的产品,因此每个公司的该文件可能不同。
adb push libstagefright.so /system/lib2、然后再重启机器
adb reboot
=============================================================
而Android 的mediaplayer包含audio及video两部分的播放功能上,单独的音频或视频都是一个系统中的重要组成部分,另外一个就是显示系统部分在,在android系统最核心的就是SurfaceFlinger组件了。而音视频也同时存在核心部分:AndioFlinger及Stagefright(OpenCore)做具体的视频处理工作。
1、代码位置
需要从代码阅读了解其设计思想,则必须知道其代码主要目录
JAVA类的路径:frameworks/base/media/java/android/media/MediaPlayer.java
JAVA本地调用部分(JNI):frameworks/base/media/jni/ p align="justify" android_media_MediaPlayer.cpp /p
这部分内容编译成为目标是libmedia_jni.so。
主要的头文件在以下的目录中:frameworks/base/include/media/
多媒体底层库在以下的目录中:frameworks/base/media/libmedia/
这部分的内容被编译成库libmedia.so。
多媒体服务部分:frameworks/base/media/libmediaplayerservice/
文件为mediaplayerservice.h和mediaplayerservice.cpp
这部分内容被编译成库libmediaplayerservice.so。
2.2系统目录:
基于OpenCore的多媒体播放器部分 external/opencore/
这部分内容被编译成库libopencoreplayer.so。从程序规模上来看,libopencoreplayer.so是主要的实现部分,而其他的库基本上都是在其上建立的封装和为建立进程间通讯的机制。
2.3系统目录:
基于Statefright的多媒体播放器部分 frameworks\base\media\libstagefright
这部分内容被编译成库 libstagefright.so。从程序规模上来看,libstagefright.so是主要的实现部分,而其他的库基本上都是在其上建立的封装和为建立进程间通讯的机制。
=============================================================
由于编写的视频播放器最终都是调用系统的MediaPlayer来进行播放,而视频解码方式有软解码和硬解码两种方式,关于这两种编码方式看下文。
硬解码和软解码的区别
老鸟指点迷津 “三十年河东,三十年河西”,以前我们很多人都认为硬解码要更好一些,但是现在我们建议是:对于那些仍在使用老机器,或者动手能力比较高的用户,推荐硬解码;反之,对于普通用户而言,如果你的机器性能已经足够,使用软解码也未尝不可,不用苛求一定要“玩硬的”。 摘自《微型计算机》 ============================================================= 作者:欧阳鹏 欢迎转载,与人分享是进步的源泉! 转载请保留原文地址:http://blog.csdn.net/ouyang_peng =============================================================
字节卷动 You will never know how excellent you are unless you impel yourself once.
相关文章
- android 遇到问题未处理
- android 获取应用的当前版本号&获取当前android系统的版本号
- [Android] 05 - Local & Remote DB
- [Android] i2c-toos 在 Android 上使用
- android 设置屏幕方向
- Android Fragment 真正的完全解析(下)
- Android去除界面默认标题栏
- Android异步加载图像(含线程池,缓存方法)
- Android坐标系统常用方法属性总结
- 《React-Native系列》19、 ListView组件之上拉刷新(iOS和Android通用)
- 我的Android进阶之旅------>关于使用Android Studio替换App的launcher图标之后仍然显示默认的ic_launcher图标的解决方法
- 我的Android进阶之旅------>Android中查看应用签名信息
- 我的Android进阶之旅------>(全解析)屏幕尺寸,分辨率,像素,PPI之间到底什么关系?
- 我的Android进阶之旅------>Android关于Activity管理的一个简单封装
- 我的Android进阶之旅------>解决Bug:打开eclipse报错,发现了以元素 'd:skin' 开头的无效内容。此处不应含有子元素。
- 我的Android进阶之旅------>Android关于ImageSpan和SpannableString的初步了解
- 我的Android进阶之旅------>解决 Error: ShouldNotReachHere() 问题
- 我的Android进阶之旅------>使用ThumbnailUtils类获取视频的缩略图
- 我的Android进阶之旅------>Android中StateListDrawable支持的状态
- 我的Android进阶之旅------>Android颜色值(RGB)所支持的四种常见形式
- 我的Android进阶之旅------>Android 众多的布局属性详解
- 我的Android进阶之旅------>Android使用9Patch图片作为不失真背景
- 我的Android进阶之旅------>Android之ListView实现下拉回弹刷新
- 我的Android进阶之旅------>android Matrix图片随意的放大缩小,拖动
- 我的Android进阶之旅------>Android中Drawable分类汇总详解
- 我的Android进阶之旅------>Android ListView 应用解析(使用ArrayAdapter,SimpleAdapter和SimpleCursorAdapter适配器)
- 我的Android进阶之旅------>Android实现数据存储技术