admin管理员组

文章数量:1531716

引子

之前在知乎上发过一篇教人转换flv格式成mp4格式的文章,结果无数人跑来留言问怎么下载怎么安装FFmpeg。
啊,这。
考虑到知乎的帖子修改实在很不方便,就在这里简单说一下,能不能在这里看到全凭各位缘分了。

FFmpeg与GPL协议

众所周知,FFmpeg作为开放源码的自由软件,是在LGPL、GPL协议下发布的(如果使用了其中一些使用GPL协议发布的模块则必须使用GPL协议),任何人都可以在遵守协议的情况下自由使用。目前有很多播放软件都使用了Libav、FFmpeg的代码,但他们并没有遵守LGPL,GPL协议,没有公开任何源代码。

时效性

本文写作于2021年4月4日


FFmpeg官网地址

官网地址是: https://ffmpeg/

官网长这样:

点击那个硕大的Download图标,进入下载页面。

出现的页面不要着急点,如果你的显示器不够大,请把页面往下稍微滚动一点点。

在出现的代表Windows平台的蓝底白窗的图标上点击左键,下面会显示出Windows平台的下载选项:

有朋友问,哎呀有两个选项,我该点哪个?
随便啦,一般我怕麻烦,就直接选择第一个了。

那么点击第一项:Windows builds from gyan.dev


不要怕,这也是官网背书的正规网站

哦哟!
跳转到了一个新的网站:

对于英文不太好的朋友,不要慌乱,用Google机翻一下就是这么个意思:

此页面托管包含ffmpeg,ffprobe和ffplay二进制文件的软件包。
这些与Windows 7及更高版本兼容。 它们可以在Windows Vista上运行,但尚未经过测试。
如果要下载ffmpeg以支持程序(例如Krita或Blender)中的功能,则Release Essentials版本已足够。

说人话!
Win 7和Win 10可以放心用,Vista自己试着用。
如果是在运行其它的程序中提示需要ffmpeg的支持来运行该软件,那么下载Essential的版本就可以了。


版本选择

一共有四个版本:

There are 4 Windows build variants available:
git full - built from master branch with a large set of libraries
git essentials - built from master branch with commonly-used libraries
release full - built from latest release branch with a large set of libraries
release essentials - built from latest release branch with commonly-used libraries

其实如上所述,FFmpeg一共分两种发行版:Git和Release,其中每个发行版又分完全版(Full)与基本版(Essential)。

依据StackOverflow网站页面What is the difference between ffmpeg packages and sources的解释,Git版里面所包含的功能要比Release版的新,个人理解Git类似于大部分软件的Beta版Release类比于稳定版。

选择一个下载,这里以Git、Full为例:
往下滚动页面,在网页的中下方,找到下载链接:
没有一丝陷阱,直接点击Links的第一个,也就是红色的
https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-full.7z
就可以下载了。


验证下载的文件

下载完成不要着急打开,尤其是用了迅雷之类p2p下载软件的朋友们,更应该养成这样的好习惯。
让我们来验证一下SHA256,确保你下载下来的文件真实且完整。

打开Powershell或者CMD,输入以下命令:

certutil -hashfile yourfilename.ext SHA256

这里是一个在Win 10 Powershell下输入的命令与运行的结果示例:

PS C:\Users\Luwieer> CertUtil -hashfile F:\Lab\ffmpeg-2021-04-04-git-b1b7cc698b-full_build.7z SHA256
SHA256 hash of F:\Lab\ffmpeg-2021-04-04-git-b1b7cc698b-full_build.7z:
0d3dd222731adf98a893a183555f0fe12c395ed2d131d37fe26eee837a446e12
CertUtil: -hashfile command completed successfully.

SHA256的值与图中比对,可知我下载的文件完整无误。


安装FFmpeg

把下载得到的7z压缩包解压到文件夹,39.3 MB的压缩包解压后体积高达329 MB。
进入解压后的文件夹,找到bin文件夹,然后将里面的三个exe文件悉数复制到你的Windows\system32\

一般会有一个窗口弹出来要求管理员权限来操作,点击同意即可。

稍等几秒钟等复制完成,打开Powershell或者CMD:

任意目录中输入以下命令并按←—— Enter以执行:

ffmpeg

如果出现以下的信息,就说明你的FFmpeg安装正确,可以使用了。

PS C:\Users\Luwieer> ffmpeg
ffmpeg version 2021-04-04-git-b1b7cc698b-full_build-www.gyan.dev Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 10.2.0 (Rev6, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libdav1d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-libglslang --enable-vulkan --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint
  libavutil      56. 72.100 / 56. 72.100
  libavcodec     58.135.100 / 58.135.100
  libavformat    58. 77.100 / 58. 77.100
  libavdevice    58. 14.100 / 58. 14.100
  libavfilter     7.111.100 /  7.111.100
  libswscale      5. 10.100 /  5. 10.100
  libswresample   3. 10.100 /  3. 10.100
  libpostproc    55. 10.100 / 55. 10.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'
PS C:\Users\Luwieer>

你说了这么多,FFmpeg到底有什么用?!

ffmpeg截取mp3指定时间的内容

常在听mp3或其他格式音乐的朋友,有时会有特别喜欢的片段,例如副歌的部份会想拿来做手机的铃声。只要系统中有安装好的ffmpeg,一行指令就OK了,相当简单。让我们分成两步骤来完成他吧!

第一步先用播放软体将想要处理的音乐档桉听一次,把想独立出来部份的时间记下来,看是几分几秒到几分几秒。记好后,第一步也就完成了。

第二步就是下指令了。

ffmpeg -i input.mp3 -ss hh:mm:ss -t hh:mm:ss -acodec copy output.mp3

参数说明:
-ss : 指定从那裡开始
-t : 指定到那裡结束
-acodec copy : 编码格式和来源档桉相同(就是mp3)
这方法不只是MP3可以用,其他的许多格式也都适用,只是输出档桉的副档名就要跟着改一改了。

以下举个例子,如果我想把aa.mp3中的1分12秒到1分42秒的地方切出来,然后存成bb.mp3,指令如下

ffmpeg -i aa.mp3 -ss 00:01:12 -t 00:01:42 -acodec copy bb.mp3

用ffmpeg压缩视频大小的两种方法

有时候录制的mp4视频体积太大,需要减小体积,或者上传或者用微信发送,可以用以下两种方法:

第一种,在PC上可以正常播放,发送到iOS版微信就无法正常打开,如果不需要用微信,就用这个:

ffmpeg -i input.mp4 -vcodec libx265 -crf 28 output.mp4

第二种,需要通过微信发送就用这个:

ffmpeg -i input.mp4 output.mp4

flv转mp4

ffmpeg -i “input.flv” -c copy “output.mp4”

常用的指令和参数(这一段转自网络,非原创):

【把aa图片作为aa.mp4的Thumbnail,生成output.mp4】
ffmpeg -i aa.mp4 -i aa.jpg -map 1 -map 0 -c copy -disposition:0 attached_pic output.mp4

1.【切割MP3,按时间准确切割】
ffmpeg -i F:\源.mp3 -ss 00:20:00 -to 02:30:05 F:\目标文件.mp3

2.【MTS–>MP4】
ffmpeg -i F:\源.mts -b 4M -s 1280720 F:\结果.mp4
说明:(-b 4m:码率是4M;-s 1280
720:这个是设定视频大小。这2个参数其实可以删掉)

3.【MP4–>WMV】:ffmpeg -i f:\视频.mp4 -b 4M f:\out.wmv

4.【MP4图像旋转】ffmpeg -i f:\o.mp4 -vf “transpose=1” f:\o2.mp4
说明:主要参数: -vf “transpose=1” ,这里等于1是顺时针90度旋转;
如果用手机录制的时候录反了,则执行2次这个操作就正过来了

5.【MP4–>MP4改尺寸】ffmpeg -i 源.mp4 -b 4M -s 640*340 -max_muxing_queue_size 9999 OUT.mp4

6.【MP4–>MP4改尺寸加水印】ffmpeg -i G:\源.mp4 -vf “movie=logo.png [logo];[in][logo] overlay=10:20 [out]” -b 2M -s 640340 g:\OUT.mp4
说明:
1: -vf “movie=logo.png [logo];[in][logo] overlay=10:20 [out]” 这里面的是加水印的参数,logo.png是我自己做的PNG水印,大小300
100,10:20是水印的位置,为了方便,就把logo.png拷贝到FFMPEg的bin目录下(必须放,加路径就失败),这样不用再加路径了 ;
2: -b 2M 是用2M压缩率;
3: -s 640340 意思是图像分辨率改为640340

7.【快速剪切某段视频作为输出】ffmpeg -i H:\源.mpg -ss 0:0:0 -to 0:23:20 -c copy G:\OUT.MP4
说明:上面截取 H:\源.mpg 这个视频,从第0秒开始,到23分20秒,这样一段,保存到G:\out.mp4,注意参数必须是 -c copy ,这样执行起来特别快,也就不到半分钟就搞定。

8.【该编码为H265,让MP4瘦身2/3,1G的MP4可以压缩到300M】 ffmpeg -i 源.MP4 -vcodec libx265 -acodec copy -max_muxing_queue_size 9999 OUT.MP4

9.【WAV转换格式到amr】ffmpeg -i test.wav -acodec libamr_nb -ab 12.2k -ar 8000 -ac 1 wav2amr.amr

10.【提取视频中的声音保存成一个mp3】ffmpeg -i 源.mp4 输出.mp3

11.【要实现批量转换,可以直接用这个批处理文件】 for %%i in (*.mkv) do ffmpeg.exe -i “%%i” -vcodec copy -acodec copy “%%~ni.mp4”


夹带点儿私货

FFmpeg十分好用,我本人用它来压制《Clannad》。
这部动画豆瓣评分9.4,Bilibili上评分9.9,有正版,是非常不错的作品。

本文标签: 官网ffmpegWindows