谁是编程界的六边形战士
如果问世界上最伟大的程序员是谁,大概很多人会回答图灵。
但如果问世界上仍在世的最伟大的程序员是谁,这个答案就会有分歧得多,可能有人会说《计算机程序设计艺术》的作者高德纳,或者Linux的作者林纳斯,其中可能还会参杂着一个有些陌生的名字: 贝拉。
Fabrice Bellard (法布里斯·贝拉) 1972年生于法国格勒诺布尔,这可能是你第一次听说过的法国程序员。
实际上他大学就读于巴黎高等综合理工学院,听起来名字平平无奇,也就是出过三位诺贝尔奖获得者,一名菲亚特奖得主以及三位法国总统。
当然,他的天才在上大学之前就已经展现出来了。
从9岁开始,他就在计算器上练习编码技术,11岁开始学习BASIC。17岁的时候写了一个压缩器LZEXE,在DOS环境中非常流行。25岁发现了一种新的,更快的公式来计算二进制表示中的pi的单位数,在2009年,他用一台家用电脑打破了由超级计算机创造的圆周率世界纪录。
在计算机科学三大浪漫方面。编译器领域,2000年他写了个4KB大小的C语言编译器子集 OTCC ,赢得了国际混淆C代码大赛(IOCCC)的冠军,这个项目后来发展为TinyCC,一个完整的包括C语言预处理器,C语言编译器,C语言汇编器和C语言的连接器在内的TCC可执行程序,而只有100KB左右大小。图形学领域他也有作品TinyGL。操作系统领域,他用JavaScript写了一个PC虚拟机Jslinux。
最近几年Fabrice的主要精力放在LTE软基站系统上,我对这个领域完全不熟悉,没法通俗易懂的形容他的能力和成就,你只要知道他是这个领域的绝对大牛就可以。
而今天我们要聊的,则是除了上述之外,另一个吊打全领域的项目:FFmpeg。
FFmpeg有多强呢?可以说,它能够解决你的一切和音视频相关的问题,诸如暴风影音,QQ影音还有 很多人用过的格式工厂,都使用了FFmpeg的源码。不过这个使用的并不光彩,因为FFmpeg是基于LGPL开源的,而这些项目违反了开源协议。关于开源和开源协议的部分,下次有机会再讲。
可能说到这里,你对FFmpeg还没有一个直观的感受,它是什么,它能做什么?不如直接安装一个上手试用看看吧。
首先你最好在FFmpeg的官网找到下载链接,下载安装一下,在命令行输入ffmpeg可以看到这个图片
就说明安装成功了。
我们先来一个最简单的:
直接可以提取视频中的音频内容。
如果你从网上下载的视频是flv,无法播放,那直接也可以转成其他的格式。
这个是我非常常用的一个指令。每次做完视频,我会把小样发在群里预览,为了加快传输速度,也是为了防止意外流出,我会把视频做一个压缩。如果想要更安全的话,可能就需要给视频加水印了。
当然,加水印也可以用FFmpeg处理:
FFmpeg还能做什么呢?比如视频转gif?
我还用FFmpeg做过一个有趣的事情
这个脚本可以把视频切成图片,在看一些教学视频的时候,等于快速把视频变成了PPT,可以大大提高效率。
上面提到的这些功能大概也就是发挥了FFmpeg 1%的能力吧,这东西的恐怖之处就在于,你但凡遇到新的音视频方面的问题,就很发现,FFmpeg能解决。它好像总是刚刚好够用,总是够用。
有很多同学困惑说,什么项目才是足够大的,足够复杂的项目。其实真正的复杂是被包含在内部的,看起来功能繁多的系统,可能反而很简单,而做一个“可以把任何视频转换成任何格式”,一句话就能说清楚的软件,是非常复杂的。
#开源项目推荐#