转码利器——FFMPEG
本文最后更新于:2020年11月20日 凌晨
FFmpeg简介
FFmpeg它提供了录制、转换以及流化音视频的完整解决方案。很多转码软件内核就是依赖Ffmpeg
借助FFmpeg,你可以轻松合并字幕文件到视频文件内。解决了下载原盘电影没有内嵌字幕,放到电视机上没有字幕的困扰。
为什么要用FFmpeg
举个“荔枝”,
- 下载了电影原盘,清晰度极高,但是想放到电视、投影仪上看,不能匹配字幕文件;这个是时候,你就可以用FFmpeg转码文件的同时,加入字幕。
- 设备不支持mkv格式,只支持h264的mp4格式?这个时候,你就可以用FFmpeg转码mkv为mp4了。
视频教程
如果视频无法加载,请访问:https://www.bilibili.com/video/BV1q7411K75h/
前提
一台带Mac/Linux/Windows的设备一台。
(理论上,树莓派也可以,但是可能性能不足……)
Mac端
注意:Homebrew安装的FFmpeg可以使用brew的更新命令,更新FFmpeg;如果是手动安装,需要自己手动替换文件更新,最后效果:终端内输入ffmpeg即可使用:
方法一:使用Homebrew安装
终端输入:
brew install ffmpeg
如果你的brew连接正常,大概下载100m+然后安装即可。
方法二:手动下载预编译版本并配置全局
下载FFmpeg Mac Version
进入FFmpeg官网,下载最新版本的FFmpeg:
下载后是一个zip结尾的文件,解压后是预编版本的ffmpeg,这个我们是可以在终端内使用的,但是为了全局使用,我们配置到全局变量。
解压并移动位置
解压后,移动到一个自己比较喜欢的位置,主要是方便自己好找到:
终端修改全局配置文件(Path)
终端内输入:
sudo vim /etc/profile
如果不想设置全局配置文件,可以设置到 .zshrc 文件内:
sudo vim ~/.zshrc
编辑/e t c/profile 文件
输入Mac登陆密码,回车:
添加FFmpeg到全局变量
在刚刚界面下,按键盘“i”,进入编辑,添加FFmpeg变量地址(注意:需要定位到ffmpeg所在文件夹内):
export PATH=$PATH:{FFmpeg's Path}
如我的:
重点来了,因为Mac系统没有su用户,只可以sudo提权操作;所以,我们要保持,也要调用sudo提权,键盘按esc,然后输入:
:w !sudo tee %
回车,按键盘”L“,然后再输入:
:q
回车返回终端交互。
最好,载入配置,终端输入:
source /etc/profile
这个时候,就可以FFmpeg全局使用啦。
编辑.zshrc文件
添加FFmpeg到全局变量
按键盘“i”,进入编辑,添加FFmpeg变量地址(注意:需要定位到ffmpeg所在文件夹内):
export PATH=$PATH:{FFmpeg's Path}
如我的:
完成后按“Esc”,然后在输入**:wq**保存并退出,最后师文件生效:
source ~/.zshrc
方法二:下载项目源代码编译安装
本方法不适用小白,所以简单说一下:
下载源码解压:
终端进入解压后的文件夹内:
./configure --enable-shared --prefix=/usr/local/ffmpeg
/usr/local/ffmpeg 为编译安装地址。
编译好后,参考方法二添加进环境变量。
Windows系统端
下载组建包
还是因为Windows没有类似Homebrew的集大成者,所以我们要手动安装,并且配置环境变量
首先,下载ffmpeg:https://ffmpeg.org/download.html
之后我们选择最新发布版本:
下载解压后,移动到一个自己比较喜欢的位置,主要是方便自己好找到。
配置环境变量
解压我们刚刚下载的安装包,并记住解压路径:
鼠标右键此电脑–属性–系统属性–环境变量–用户变量
**找的并双击Path–新建,加上我们刚刚看到的路径(定位到库文件,即bin)
测试是否成功
win+R–cmd–输入ffmpeg
出现
即为成功
Linux系统端
Linux自带包工具已经十分完善:
Ubuntu/Debian使用apt安装:
sudo apt install -y ffmpeg
CentOS比较麻烦一点,需要编译安装:
sudo yum install -y yasm
./configure
sudo make && sudo make install
当然,你也可以手动配置环境变量,方法和Mac手动配置方法一样,不再赘述。
FFmpeg操作
添加字幕
我们下载下来的视频,总是字幕和视频原文件区别开来的(蓝光、蓝光压缩盘等),所以需要合并;你还在用老牌格式工厂等工具吗?其实,FFmpeg即可
在文件目录下,终端输入:
ffmpeg -y -i 「视频全名」 -vf subtitles=「字幕文件名」 「导出的视频文件名」
命令解锁:
其实,-y是不需要的,只是为了防止目录下有和导出视频文件名相同的视频,导致其失败;所以-y即:覆盖。
e.g.ffmpeg -y -i 1.mkv -vf subtitles=1.ass out.mp4
转换视频格式
ffmpeg -i input.ogv -vcodec h264 out.mp4
ffmpeg -i input.ogv -vcodec mpeg4 out.mp4
ffmpeg -i input.ogv -vcodec libxvid out.mp4
ffmpeg -i input.mp4 -vcodec wmv1 out.wmv
ffmpeg -i input.mp4 -vcodec wmv2 out.wmv
-i 后面是输入文件名。-vcodec 后面是编码格式,h264 最佳,但 Windows 系统默认不安装。如果是要插入 ppt 的视频,选择 wmv1 或 wmv2 基本上万无一失。
如果你想维持你的源视频文件的质量,使用 -qscale 0 参数:
ffmpeg -i input.webm -qscale 0 output.mp4
转换视频格式并添加字幕
因为下载,h264的mp4,从压缩和质量角度来说很不错;如果加了字幕还要质量,选择h264吧。
ffmpeg -y -i 「视频全名」 -vf subtitles=「字幕文件名」 -vcodec h264 「导出的视频文件」.mp4
或者这个,crf最高,但是清晰度很高:
ffmpeg -y -i filename.mkv -vf subtitles='filename.mkv' -disposition:s default+forced -c:v libx264 -c:a libmp3lame -crf 27 -preset ultrafast filename.mp4
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!