谁是编程界的六边形战士

如果问世界上最伟大的程序员是谁,大概很多人会回答图灵。

但如果问世界上仍在世的最伟大的程序员是谁,这个答案就会有分歧得多,可能有人会说《计算机程序设计艺术》的作者高德纳,或者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可以看到这个图片

就说明安装成功了。

我们先来一个最简单的:

ffmpeg -i video.mp4 audio.mp3

直接可以提取视频中的音频内容。

ffmpeg -i video.flv video.mp4

如果你从网上下载的视频是flv,无法播放,那直接也可以转成其他的格式。

ffmpeg -i input.mp4 -s 640x480 -c:a copy output.mp4

这个是我非常常用的一个指令。每次做完视频,我会把小样发在群里预览,为了加快传输速度,也是为了防止意外流出,我会把视频做一个压缩。如果想要更安全的话,可能就需要给视频加水印了。

当然,加水印也可以用FFmpeg处理:

ffmpeg -hide_banner -i big_buck_bunny.mp4 -i doggie2.png -filter_complex "overlay=x=0:y=0" out.mp4 -y

FFmpeg还能做什么呢?比如视频转gif?

ffmpeg -ss 00:00:20 -i sample.mp4 -to 10 -r 10 -vf scale=200:-1 cutekid_cry.gif # -ss : indicates the starting point of GIF # -i : input file # sample.mp4 : My video file name # -to : End position of the GIF file # -r : frame rate. You can increase the value to get more quality GIF file # -vf : filter graph. To scale the GIF image in the desired size.

我还用FFmpeg做过一个有趣的事情

ffmpeg -i input.mp4 -r 1 -q:v 2 -f image2 pic-%03d.jpeg

这个脚本可以把视频切成图片,在看一些教学视频的时候,等于快速把视频变成了PPT,可以大大提高效率。

上面提到的这些功能大概也就是发挥了FFmpeg 1%的能力吧,这东西的恐怖之处就在于,你但凡遇到新的音视频方面的问题,就很发现,FFmpeg能解决。它好像总是刚刚好够用,总是够用。

有很多同学困惑说,什么项目才是足够大的,足够复杂的项目。其实真正的复杂是被包含在内部的,看起来功能繁多的系统,可能反而很简单,而做一个“可以把任何视频转换成任何格式”,一句话就能说清楚的软件,是非常复杂的。

#开源项目推荐#
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
王德福
作者分享
又一次受邀参加了中国计算机学会CCF CED第四届中国工程师文化日,本周五杭州即将开幕! 大会官网:https://ccf.org.cn/CED2024YH 时间:2024-09-27 9:00 - 17:00 地点:杭州 阿里巴巴数字生态创新园7号楼 我今年依然是负责脱口秀专场的稿件,所以拿到了一些福利赠票。 【CED特邀赠票登记,限27日白天大会及午餐】 https://docs.qq.com/form/page/DU2NxY3ZzQ2hNU3pP 赠票码:CEDfuture,数量有限,先到先得! 期待礼拜五线下面基!
6
去年推的微派岗位有朋友已经入职了,同学和公司的反馈都很好,今年再帮忙发一次。 职位描述 1、负责公司内部系统前端页面的开发和优化; 2、负责公司内部低代码平台上应用搭建、开发、优化; 3、效率工程平台开发,通过工具、流程建设提高业务质量和效率; 4、与产品、设计、测试人员沟通,保证产品的质量和开发速度; 5、持续对内部系统进行前端架构改造和优化,提升系统的稳定性、可扩展性、用户体验; 职位要求 1、在校生; 2、对 JavaScript 有深入的理解; 3、熟练 HTML5 + CSS3 + JS 编程,熟悉各种前端调试工具,能够高保真还原设计稿,具备良好的代码风格以及接口、架构设计能力,熟悉 JS 性能优化,熟练解决各种浏览器兼容问题; 4、熟练使用 React,并了解其运行机制,熟练使用 Git,熟悉 Node.js、Webpack,熟悉前端模块化,前端工程化; 5、对后端开发有了解或有过项目经验; 6、严谨的工作态度,对技术有强烈的进取心,具有良好的沟通能力和团队合作精神、优秀的分析问题和解决问题的能力; 加分项: 1、善于使用工具,对工程效率、用户体验、程序性能、信息安全有了解或追求; 2、具有跨语言开发能力; 3、具有内部系统开发经验(包括不限于审批流程、人事、薪酬、财务、数据分析等); 4、具有低代码平台使用和开发经验; 5、热爱 B 端事业; 微派网络校招内推码: MKZAD52 投递链接: https://wepie.jobs.feishu.cn/s/ikaekUQ2
0
【开源大牛手把手带你写代码,还有 12000 元奖金|中科院开源之夏又来了-哔哩哔哩】 https://b23.tv/q2SxaK7 最后四天,捡漏机会很大!
9
【2023百大的2857个视频一次性都给你-哔哩哔哩】 https://b23.tv/ruDlmUm 爬了百大的所有视频,送给你们可以没事看着玩😏
42
从面试官筛选简历角度,给到大家写简历的建议
56
下载 APP