转换视频文件格式
FFmpeg 是一个用于处理多媒体资源的跨平台开源框架,能够 decode、encode、transcode、mux、demux、stream、filter、play 各种多媒体内容。
它由多个核心库组成,并提供 ffmpeg、ffplay、ffprobe 这三个工具,其中 ffmpeg 是一个命令行工具,这个项目主要使用它来处理视频。
ffmpeg 命令的格式如下,可以配置的参数很多
shell
ffmpeg {1} {2} -i {3} {4} {5}
# 以上用数字标记的参数分别是:
# 1. 全局参数
# 2. 输入文件参数
# 3. 输入文件
# 4. 输出文件参数
# 5. 输出文件
提示
参数太多的时候,为了便于查看 ffmpeg 命令可以写成多行,以反斜线符合 \
来指示命令换行
shell
ffmpeg \
[全局参数] \
[输入文件参数] \
-i [输入文件] \
[输出文件参数] \
[输出文件]
例如以下命令将 .mp4
文件转成 .webm
文件
shell
ffmpeg \
-y \ # 全局参数
-c:a libfdk_aac -c:v libx264 \ # 输入文件参数,依次指定它的音频和视频所使用的编码器
-i input.mp4 \ # 输入文件
-c:v libvpx-vp9 -c:a libvorbis \ # 输出文件参数,依次指定它的视频和音频需要使用的编码器
output.webm # 输出文件
如果不指明编码格式,FFmpeg 会自己判断输入文件的编码,所以以上的示例的命令可以简化为:
shell
ffmpeg -i input.avi output.mp4
ffmpeg 常用命令
-c
指定编码器-c copy
直接复制,不经过重新编码(这样比较快)-c:v
指定视频编码器-c:a
指定音频编码器-i
指定输入文件-an
去除音频流-vn
去除视频流-preset
指定输出的视频质量,会影响文件的生成速度
有以下几个可用的值ultrafast
、superfast
、veryfast
、faster
、fast
、medium
、slow
、slower
、veryslow
-y
不经过确认,输出时直接覆盖同名文件
安装 ffmpeg
先升级软件列表
shell
sudo apt update && sudo apt upgrade
安装 ffmpeg
shell
sudo apt install ffmpeg
# 通过查看 ffmpeg 的版本以确定其安装成功
ffmpeg -version
视频格式转换脚本
以下脚本将 .mp4
格式的文件转换为 .mov
的文件
ffmpeg-mp4-to-mov.sh
sh
#! /bin/bash
# This script convert the mp4 video to mov video
echo "Enter your input video file:"
read input_file
ffmpeg -i $input_file -c copy "${input_file}-output.mov"