技术宅学会几招FFmpeg

有些时候,我需要对某个视频文件做一些简单的处理。也或者是受亲戚朋友的委托吧(又不好意思推辞,因为人家觉得你是搞技术的,这点小事应该能轻松搞定)。但是,我犯不着为这点事去安装一个笨重的多媒体软件。我也不想去网上随便找个免费的小工具,怕它不干净。总之,我不想安装没有足够信誉的软件。不过,国外的开源软件还是可以信一信的,比如FFmpeg。矫情吧?

FFmpeg都是命令行的,用起来肯定不方便。但是,这对技术宅应该不成问题。下面,我就罗列一些比较实用的使用方法吧。

FFmpeg的下载与安装

FFmpeg是开源的。但我们不必去下载它的源代码。下载已经编译好的exe/dll即可。可以到http://www.ffmpeg.org/download.html,然后点击“Windows Builds”,再根据你当前的机器是32位还是64位来决定下载哪个包。我的机器跑的是Win 7,所以我选择了“Download FFmpeg git-7c210c4 64-bit Shared”。如果你英文不好,也可以直接去我的网盘下载:http://pan.baidu.com/s/1jGgOomy

下载完成之后,解压到硬盘上,假设路径为E:\OpenSrc。启动一个控制台程序,然后执行DOS命令进入FFmpeg工具的bin目录,如下:

应用场景1:格式转换

我想把用iPhone拍的.MOV文件转成.avi文件。最简单了,可以执行下面的命令:

ffmpeg -i D:\Media\IMG_0873.MOV D:\Media\output.avi

意思是,把D:\Media目录下的源文件IMG_0873.MOV(视频:h.264,音频:aac)转换成output.avi(编码格式自动选择为:视频mpeg4,音频mp3),目标文件仍然保存到D:\Media目录下。问题来了:我想自己指定编码格式,怎么办呢?一种方法是,通过目标文件的扩展名(.flv、.mpg、.mp4、.wmv等)来控制,比如:

ffmpeg -i D:\Media\IMG_0873.MOV D:\Media\output2.flv

另一种方法是通过-c:v参数来控制,比如我想输出的视频格式是H.265(警告:编码时间会比较长哦)。命令行如下:

ffmpeg -i D:\Media\IMG_0873.MOV -c:v libx265 D:\Media\output265.avi

注:可以先用ffmpeg -encoders命令查看一下所有可选的编码格式。

不再深究了,我们继续。我发现源文件的图像帧尺寸是1920x 1080,我不需要这么大——能有720 x 480就够了。于是,就要用上-s参数了。为了保证图像缩放后的质量,最好加上码流参数-b:v。如下:

ffmpeg -i D:\Media\IMG_0873.MOV -s 720x480 -b:v 1500k D:\Media\output2.avi

还可以更简单一点,使用-target参数匹配行业标准,参数值可以是vcd、svcd、dvd、dv、dv50等,可能还需要加上电视制式作为前缀(pal-、ntsc-或film-)。如下:

ffmpeg -i D:\Media\IMG_0873.MOV -target pal-dvd D:\Media\output2dvd.avi

又来一个问题:我发现用手机拍的视频中,有些是颠倒的,我想让它顺时针旋转90度。这时候,可以使用-vf参数加入一个过滤器,如下:

ffmpeg -i D:\Media\IMG_0873.MOV -vf "rotate=90*PI/180" D:\Media\output3.avi

注:如果想逆时针旋转90度,90前面加个负号就可以了。

如果我只需要从源视频里截取一小段,怎么办呢?比如从第2秒的地方开始,往后截取10秒钟。命令行可以这样:

ffmpeg -ss 2 -t 10 -i D:\Media\IMG_0873.MOV D:\Media\output4.avi

注:这种情况下,-ss和-t参数必须放在-i前面,表示是限定后面跟着的输入文件的。

应用场景2:视频合成

我发现,用手机拍的视频有时候背景噪音比较大。怎么把噪音去掉,换成一段美妙的音乐呢?使用FFmpeg也能轻易做到。

第一步:把源文件里的音频去掉,生成一个临时文件tmp.mov

ffmpeg -i D:\Media\IMG_0873.MOV -vcodec copy -an D:\Media\tmp.mov

注:-vcodeccopy的意思是对源视频不解码,直接拷贝到目标文件;-an的意思是将源文件里的音频丢弃。

第二步:把这个无声的视频文件(tmp.mov)与一个音乐文件(music.mp3)合成,最终生成output.mov

ffmpeg -i D:\Media\tmp.mov -ss 30 -t 52 -i D:\Media\music.mp3 -vcodec copy D:\Media\output5.avi

为了保证良好的合成效果,音乐时长必须匹配视频时长。这里我们事先知道视频时长为52秒,于是截取music.mp3文件的第30秒往后的52秒与视频合成。另外,为了保证音频时长截取的准确性,我们这里没有使用-acodec copy,而是让音频重新转码。

还有一种情况:我们希望在一段视频上叠加一张图片。可以简单实现如下:

ffmpeg -i D:\Media\IMG_0873.MOV -i D:\Media\logo.png -filter_complex ‘overlay‘ D:\Media\output6.avi

应用场景3:视频播放

格式转换或合成之后,我们需要试着播放一下。播放器的选择很多。这里顺手用ffplay工具也行:

ffplay -i D:\Media\output6.avi

应用场景4:获取视频信息

有时候,我只是想看看这个视频文件的格式信息。可以用ffprobe工具:

ffprobe -i D:\Media\IMG_0873.MOV

其他应用

FFmpeg的功能非常强大。关键是要理解各种参数的意义,并且巧妙搭配。必要的话,就把在线文档完整读一遍吧:http://www.ffmpeg.org/ffmpeg.html

时间: 2024-10-08 09:23:58

技术宅学会几招FFmpeg的相关文章

FFmpeg从入门到出家(HEVC在RTMP中的扩展)

由金山云视频云技术团队提供:FFmpeg从入门到出家第三季: 为推进HEVC视频编码格式在直播方案中的落地,经过CDN联盟讨论,并和主流云服务厂商达成一致,规范了HEVC在RTMP/FLV中的扩展,具体修改内容见下. 4.1 FLV规范扩展 HEVC为视频编码格式,因此对FLV规范的扩展,只集中在Video Tag,其它部分,无任何改动. 4.1.1 支持HEVC的VideoTagHeader 扩展后的VideoTagHeader如下图所示(红色字体为新增内容):图9. 支持HEVC的FLVTa

趣拍云:深耕细作 打造最专业短视频开发平台

短视频是指视频长度不超过2分钟,通过短视频平台拍摄.编辑.上传.播放.分享.互动的,视频形态涵盖纪录短片.DV短片.视频剪辑.微电影.广告片段等的视频短片的统称,伴随着社交媒体的迅猛发展以及网络带宽.云技术等基础条件的成熟,短视频市场在2016年迎来了爆发式增长,据有关数据显示,预计到2020年,短视频内容消费贡献的广告营收将是现在的10倍,达到600亿元人民币.如此巨大的市场,自然吸引了众多参与者,而杭州短趣网络传媒技术有限公司就是其中一个参与者,他们于2016年1月推出的 "趣拍云"

创业第一个月总结

前段时间决定出来创业后,写了一篇简单的博文"技术变成客户才值钱"来勉励自己,想不到有这么多朋友深有同感,也有部分朋友问我创业进行得如何.首先谢谢大家的支持,我想只要我有些空闲时间,我会将自己创业过程中的一些好的案例和心得在这里写出来,希望与大家一起前进. 实际上,与许多朋友们一样,在开始出来创业时,不断在网上查如何创业.怎样创业.创业要注意什么等相关内容,但搜来搜去,很难找到自己心中想要的答案.其实,不管是创业咨询还是技术学习,真要从网上得到完全想要的答案都是很难的.所以创业第一条,只

有意思的矛盾体

引言 LZ最近生活与工作都在经历着巨变,今晚夜不能寐时,不想看书,忽然想起曾经在某创业网站上注册过一个账号,于是好奇心驱使下,LZ打开看了下. 结果映入眼帘的是一大批请求合作创业的创始人,各种求加QQ,求夜聊,求合体.由于注册时间很久了,于是LZ非常好奇自己当时到底写了什么,引得大家这么疯狂.结果看完以后,LZ内流满面,自我介绍是以下这样写的. 曾就职于教育与金融行业,任职开发工程师,所做项目覆盖互联网以及企业应用领域.2009年毕业于西北民族大学数学专业,后在XXXX(为避免广告嫌疑,隐蔽LZ

想跳槽了,却感觉左右为难

一个人在企业服务了十多年,也算是老员工了,可是,现在却面临着两难的境地,是该跳槽了?还是继续留下? 说起这个话题,不得不从原因说起.自从部门更换了一个新领导,部门的格局就变了.从最开始大学毕业,进入企业,说心里话,喜欢编程这个行业,喜欢里面的逻辑,所以,我也就是一个典型的技术男,和所有的技术男一样,专心实现业务流程,实现各种技术,尝试新技术,老领导虽然不是搞技术的,但是特别尊重搞技术的,也特别正直,这里用了正直这个词语,因为感觉自己也是这类人.技术上我们可以讨论的热火朝天.所以大家相处得特别好.

站在巨人的肩膀上学习Android开发

我们知道,一开始最好的学习方法是模仿,尤其是模仿巨人.那说到Android开发的模仿自然就是分析并研究主流程序的布局.实现方法,进而提升自己的技术. 第一招----逆向工程 要分析"巨人"们的软件,自然免不了逆向工程,即将APK程序转化为我们可以看的懂得源码.这个google官方已经帮我们做好了工具,apktool就是一款很好的逆向工具. 下载地址为:http://pan.baidu.com/s/1kTqRhaR 我们以分析微信为例来说明这个工具的使用: 你只需执行如下命令,即完成了反

我愿意帮你,你愿意跟我学吗?

先聊聊自己吧. 我09年是在一家培训机构实习+学习,当时前端算挺早的啦,会网页制作(DIV+CSS)+js写的特效就是正八经的前端了. 因为是一个普通的大学,无意中接触了这个,所以还算比较感兴趣,后来老板说先当助教吧,慢慢往讲师方向发展吧.当时当助教给一些学生讲东西,心里确实不错,因为可以教他人啦,帮助他们,真心觉得不错.可慢慢的发现自己需要提高了,后来再三考虑还是出来找工作了. 当初是这样的想的,自己还是需要增加更多的工作经验和项目经验才能教他人,只有自己掌握了靠谱的技术,拥有真实的项目经验才

商城托管 | 淘宝网店托管

您在行业网站运营过程中是不是有这样的困惑: 1.营利模式模糊,方向模糊2.维护人员不好管理,效率低下3.没有技术人员,程序变动比较费力费时4.专业的网站技术人员难招,而且支付费用较高5.不知道如何管理,工作效率太低6.网站商机信息处理不及时,导致损失严重7.推广费用太高,而且回报的还没付出的多,流量上来了,成交量确很低.……如果您有以上情况,恭喜您找对了地方,我们就是根据以上的情况而专门推出B2B网站托管服务的,以弥补非专业行业在网上管理和推广上的的不足,避免走过多的弯路,降低成本. 选择我们的

怎样在ios中的Safari内开发出一款类似native app一样的全屏webapp

此文章转自我www.gbtags.com的文章. <meta name="format-detection" content="telephone=no email=no" /> 1.在meta中取消电话邮箱的识别. <meta name="apple-touch-fullscreen" content="yes"> 2.据说是全屏,但是实际ios7.1无效果,查看了百度的大网站的web站点,都已经移除