转换视频文件格式

code

转换视频文件格式

参考

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 指定输出的视频质量,会影响文件的生成速度
    有以下几个可用的值 ultrafastsuperfastveryfastfasterfastmediumslowslowerveryslow
  • -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"

Copyright © 2024 Ben

Theme BlogiNote

Icons from Icônes