记录一下折腾webp 的过程

最近有客户想要处理webp 的动图,情况当然是我们并不能处理webp 格式的图片。这事就交给了我来折腾,一开始想着用瑞士军刀ffmpeg。结果是折腾了差不多一天,前前后后编译了几十次ffmpeg 源码后才发现,并不支持decode 带动画的webp....坑爹啊。 不过也算熟悉了一下源码编译的过程,大体上就是:

./configure
make
make install

在运行configure 的时候通常要根据需要带上一些参数,比如在折腾ffmpeg 的时候,因为需要enable webp 的一些选项而这些选项又有依赖的库文件

./configure --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib

这里的--extra-cflags 是告诉编译器去哪里搜索头文件,--extra-ldflags 是告诉编译器去哪里找需要链接的库文件,believe me 这两参数很重要...

ffmpeg 没戏以后我又找到了谷歌自家的libwebp, 下载源码编译过程大同小异,值得一提的是如果想要编译出的工具支持多种输入输出格式和其他附加功能的话,必须要求系统上安装相应的库,比如如果想让dwep 工具把webp 图片转成jpg 和png 格式的话就要求机器上装了libpng。我刚好就有这种需求,于是再一次下载源码编译安装,一切看似顺利。但是在编译libwebp 本身的时候却发现dwep 的png 支持并没有开启,查看configure 打印的日志发现他在调用libpng-config 脚本的时候出错:

/bin/sh^M: bad interpreter:

一脸瞢逼的我去网上搜了一下,发现原因是此文件是在dos 模式下编辑的,所以换行是\r\n,所以在linux 环境下导致无法解析,还好解决方法很简单,只用vim 打开这个文件输入命令:

:set ff=unix

保存后重新运行configure,发现png 支持已经打开了,终于可以愉快的make 了。

时间: 2024-12-19 16:14:41

记录一下折腾webp 的过程的相关文章

【Android实战】记录自学自己定义GifView过程,能同一时候支持gif和其它图片!【有用篇】

之前写了一篇博客.<[Android实战]记录自学自己定义GifView过程,具体解释属性那些事! [学习篇]> 关于自己定义GifView的,具体解说了学习过程及遇到的一些类的解释,然后完毕了一个项目,能通过在xml增加自己定义 view (MyGifView)中增加自己定义属性(my:gif_src = "@drawable/coffee").达到播放gif图片的效果. 可是.有几个问题 1.gif_src 属性仅仅支持 gif 图,并不支持其它类型的图片 2.仅仅支持

记录一则ORA-00054,ORA-00031解决过程

生产环境:AIX 5.3 + Oracle 10.2.0.5 任务要求:普通表改造分区表,历史数据不要 这个需求很简单: pl/sql导出建表语句,依次修改成分区的建表语句,注意将索引修改成本地索引; drop 原表; create 新分区表. 1.重建过程中遇到问题:删除某表时报错ORA-00054,导致无法删除重建此表. SQL> drop table MOD_RESALT_PERF_CARR_1X_ZTE; create table MOD_RESALT_PERF_CARR_1X_ZTE(

记录sqoop同步失败问题解决过程,过程真的是很崎岖。(1月6日解决)

记录sqoop同步失败问题解决过程,过程真的是很崎岖.事发原因:最近突然出现sqoop export to mysql时频繁出错.看了下日志是卡在某条数据过不去了,看异常.看sqoop生成的mr并未发现问题.最后把要export的原始数据拿notepad++打开发现中断的数据是奇怪的乱码,查了一下是二进制的数据. 乱码数据生成原因:我理解,api接口时接收流数据时长度和实际长度不符. 解决办法:两块要解决,一是接口时做好容错,二是同步时还是要对这种二进制做兼容,因为谁也无法保证二进制数据不会再出

step_by_step_记录deepin下curl安装过程

记录 deepin 下 curl 安装过程 1 wget https://curl.haxx.se/download/curl-7.55.1.tar.gz 2 3 4 tar xzfv curl-7.55.1.tar.gz 5 6 cd curl-7.55.1/ 7 8 ./configure 9 10 make 11 12 make install 13 14 15 curl curl: error while loading shared libraries: libcurl.so.4: c

记录一次OOM分析过程

工具: jstat jmap jhat 1.jstat查看gc情况 S0C.S1C.S0U.S1U:Survivor 0/1区容量(Capacity)和使用量(Used) EC.EU:Eden区容量和使用量 OC.OU:年老代容量和使用量 PC.PU:永久代容量和使用量 YGC.YGT:年轻代GC次数和GC耗时 FGC.FGCT:Full GC次数和Full GC耗时 GCT:GC总耗时 这次遇到的情况是,old区到了指定的回收阀值触发fgc,但old区回收不了,持续增长(但一直频繁fgc).

记录一次tomcat排错过程

现象环境描述:测试环境,一直在运行跨易达系统(业务系统),研发重新发了个war包,就访问不了了,提交到运维这边说是环境问题,于是我开始排查. 1.JAVA_HOME.CATALINA_HOME检查 [[email protected] conf]# echo $JAVA_HOME /usr/local/jdk1.7.0_60 2.检查server.xml  <Host name="localhost"  appBase="webapps" unpackWARs

salt的api学习记录---salt-cp命令的执行过程

最近重新看了下salt-cp实现的过程,源代码逻辑相对简单,明白了salt-cp为什么只能针对文本文件.配置文件的拷贝.现在就来看看对应的代码吧 源代码文件: salt/cli/cp.py class SaltCP(object):     def __init__(self, opts):         self.opts = opts          # 读取文件内容,返回单元素字典:文件名-->文件内容     def _file_dict(self, fn_):         ''

记录一次bug解决过程:规范变量名称和mybatis的使用以及代码优化

一.总结 Mybatis中当parameterType为基本数据类型的时候,统一采用_parameter来代替基本数据类型变量. Mybatis中resultMap返回一个对象,resultType返回一个Map简单数据类型(由于需要缓存到JVM中)的映射关系. String类型转Integer类型:String类型转int类型用到的方法是不一样的. 方法入口处第一行写new Date(),防止时间在23:59:59跨界对逻辑带来影响. 考虑到上线app_resource表忘记配置供应商比例,在

记录小菜鸟在编程过程中遇到的各种已知和未知问题

如何让未知尺寸的图片.单行文本.多行文本水平垂直居中? CSS 清除浮动 兼容IE+, FF ADO.NET增删改 C#发送电子邮件 C#图片缩放 使用ImageResizer实现图片动态缩放 C#使用ffmpeg转换视频格式 C#生成验证码 winform全局鼠标键盘事件 ASP.NET MVC 分页 EntityFramework 6.x 缓存 手写Ajax Ajax站点搜索引擎不收录问题 在ASP.NET MVC 5中使用AutoFac 在ASP.NET WEB API中使用AutoFac