解码

Android高效显示图片详解(二)

*爱你&永不变心* 提交于 2019-12-07 20:18:13
实际的使用环境中,如果图片来源是SD卡或者网络,那那么加载图片的过程一定不要放在UI线程中,这样会严重的阻塞UI线程,出现ANR,程序就废了。因此我们首先要实现异步加载。 第一步:利用AsyncTask实现图片的异步加载 将decodeSampledBitmapFromResource方法放入Task的doInBackground中后台执行。不熟悉AsyncTask的同学可以学习AsyncTask的相关知识,这里不再过多介绍。 代码: class BitmapWorkerTask extends AsyncTask<Integer, Void, Bitmap> { private final WeakReference<ImageView> imageViewReference; private int data = 0; public BitmapWorkerTask(ImageView imageView) { // Use a WeakReference to ensure the ImageView can be garbage collected imageViewReference = new WeakReference<ImageView>(imageView); } // Decode image in background. @Override protected

100行代码实现最简单的基于FFMPEG+SDL的视频播放器

允我心安 提交于 2019-12-06 20:05:44
FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手。我刚接触FFMPEG的时候也感觉不知从何学起。 因此我把自己做项目过程中实现的一个非常简单的视频播放器(大约100行代码)源代码传上来,以作备忘,同时方便新手学习FFMPEG。 该播放器虽然简单,但是几乎包含了使用FFMPEG播放一个视频所有必备的API,并且使用SDL显示解码出来的视频。 并且支持流媒体等多种视频输入,处于简单考虑,没有音频部分,同时视频播放采用直接延时40ms的方式 平台使用VC2010 使用了最新的FFMPEG类库 直接贴代码 int _tmain(int argc, _TCHAR* argv[]) { AVFormatContext *pFormatCtx; int i, videoindex; AVCodecContext *pCodecCtx; AVCodec *pCodec; char filepath[]="nwn.mp4"; av_register_all(); avformat_network_init(); pFormatCtx = avformat_alloc_context(); if(avformat_open_input(&pFormatCtx,filepath,NULL,NULL)!=0){ printf("无法打开文件\n");

JavaScript之编码解码

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-06 11:15:39
不管是C还是Java、还是JavaScript,难免会遇到需要编码解码的时候,比如需要跨平台或者处理一些敏感字符。下面说道说道JavaScript中几种编解码的方法。 1. escape() 和 unescape() escape() 函数可对字符串进行编码( Unicode格式 )。该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。 unescape() 函数可对通过 escape() 编码的字符串进行解码。 unescape 方法不应用于解码“统一资源标识符”(URI)。 var str='abcABC::////!!@@我是汉子'; escape(str);// "abcABC%3A%3A////%21%21@@%u6211%u662F%u6C49%u5B50" unescape(str);// "abcABC::////!!@@我是汉子" unescape("abcABC%3A%3A////%21%21@@%u6211%u662F%u6C49%u5B50");// "abcABC::////!!@@我是汉子" 2. encodeURI() 和 decodeURI() encodeURI() 函数可把字符串作为 URI 进行编码。 该方法不会对 ASCII

Centos6.3 安装rhythmbox播放器

£可爱£侵袭症+ 提交于 2019-12-03 00:55:10
这几天折腾了一下Centos 6.3,基本的开发使用环境搭建都使用官方的说明文档基本没碰到什么问题,当一切妥当之后,开始跑跑自己code。本人有个习惯code的时候先打开音乐播放器,这时候忽然发现Centos 本身不带有音乐播放器,索性装一个。原来在Ubuntu上面一直使用rhythmbox,这次还用她吧。 yum install rhythmbox 本以为到此就结束了。挂载磁盘,找到Win7中到音乐文件,播放文件。TNN的解码错误,需要添加另外的解码插件。 好吧,那就安装插件,可是这个插件太TM的恶心了,要么找不到,找到了又要安装很多依赖,没办法谁让用的是开源软件呢。最终又是测试,又是google,终于搞定。如下: 1、确保rhythmbox、totme安装成功,具体totme有什用处,暂时不了解。(此处,参考别人的) [root @tian software]# rpm -qa |egrep 'rhythmbox|totem' rhythmbox-0.12.8-1.el6.i686 totem-nautilus-2.28.6-2.el6.i686 totem-pl-parser-2.28.3-1.el6.i686 totem-2.28.6-2.el6.i686 totem-mozplugin-2.28.6-2.el6.i686 2、配置yum库, http://apt.sw

Android中一个webkit处理汉字编码的问题

谁说我不能喝 提交于 2019-11-27 15:18:54
在XX项目中解决android webkit处理汉字编码问题的总结 问题: 服务器通过302重定向方式发送给客户端重定向地址,地址中的汉字采用原数据方式发送,没有经过任何编码。因为其中存在汉字,所以在android端经过webkit解码编码之后,最终无法正常在服务器端请求正确数据。Android中默认使用utf-8编码。 Android在framework中解析http信息,Request.java的函数readResponse通过AndroidHttpClientConnection.java的函数parseResponseHeader解析response的header部分。 存储数据使用的是org.apache.http.util.CharArrayBuffer中的CharArrayBuffer。使用SessionInputBuffer的readline来读取一行,进行解析。 我们主要关心的是Location部分,因为重定向主要是通过Location的值重新去请求url。Android中也是这么做的,不会去html的body中解析标记A的herf。 读取的每一行都会被传入到Headers.java中进行解析。Location地址被转换为String存储到mHeaders[IDX_LOCATION]中。 在从CharArrayBuffer变成String的时候,有个值得注意的地方

Android高效显示图片详解(一)

拥有回忆 提交于 2019-11-27 09:04:40
前提与解释: 安卓平台作为一款移动端的应用操作平台,其内存容量是十分有限的,内存资源是十分珍贵的,是无法与传统的桌面平台相比的,因此,在安卓平台下同样的图片操作与处理都要十分谨慎,否则你的程序可以 迅速地消耗可用内存的预算, 最终由于 OutOfMemory导致程序崩溃掉。以下有三个原因说明了我们为什么要谨慎: (1)安卓平台下对应用可使用的系统资源都做出了限制,标准安卓系统下,一个应用程序可用的最大内存为16M,一些第三方ROM 可能会上调这一限制,但是作为应用来说一定要控制自己的内存用量,这并不是可以无限制使用的。 (2)一张高分辨图片的内容耗用量是惊人的, 例如, Galaxy Nexus的 摄像头在拍摄2592X1936像素(5百万像素)。如果位图使用 的是配置 ARGB_8888 (默认的Android 2.3开始),那么此图像加载到内存占用约19MB的内存(2592 * 1936 * 4字节),直接就耗 尽了在某些设备上的每个应用程序的内存上限。 (3)安卓应用程序的一些控件经常需要几个位图一起加载。例如ListView,GridView,ViewPager等控件,并且在使用中还要快速 的滑动,要及时对图片进行更新与回收,更加增加了图片处理的难度。 解决办法: 一,如何去加载与显示大图: 其实,在安卓这样内存有限的平台上,是没有必要按照原始尺寸把一张大图完全加载进来的