banner
miaoer

miaoer

喵二の小博客 https://www.miaoer.net xLog 分站
tg_channel
telegram
bilibili

FFmpeg 常见命令

#

最近发现了并使用了 FFmpeg 发现他十分的强大,能做到各种音视频操作,有的软件也是引用的 FFmpeg 主要是他是免费开源不需要授权的工具,这里就简单做一下 FFmpeg 常见的几个命令笔记,帮助小白读者轻松转换编码自己的视频!这里大部分内容都是参考网络上有的内容以标记引用源。

来一起来玩一下吧 ฅ՞・ﻌ・՞ฅ

安装 FFmpeg#

image

Windows#

因为 FFmpeg 只提供源码需要编译,但有大神编译好的 FFmepg 可以直接使用仓库中的发行版

https://github.com/BtbN/FFmpeg-Builds/releases

Ubuntu#

sudo add-apt-repository universe
sudo apt update
sudo apt install ffmpeg

概览#

容器格式#

我们常见的视频文件格式本身其实就是一个容器,容器里面再包括视频轨道、音频轨道、元数据、字幕、标题、封面等等……
常见的视频容器格式有包括这些

  • MP4 (MPEG 4)
  • MKV (Matroska)
  • WebM
  • AVI (ASF)
  • MOV (QuickTime)

TOP: WebM 就是最近大火的 AV1、VP9、VP8 常用的容器,编解码需要特定的硬件加速

例如 AIN 22 年新品都支持 AV1 编解码硬件加速

编码#

常见的几种编码;包括了授权编码、无版权编码、音频编码格式

授权编码

  • H.262
  • H.264
  • H.265

无版权编码

  • VP8
  • VP9
  • AV1

音频编码格式

  • MP3
  • AAC

视频编码器

  • libx264: 最流行的开源 H.264 编码器
  • NVENC: 基于 NVIDIA GPU 的 H.264 编码器
  • libx265: 开源的 HEVC 编码器
  • libvpx: 谷歌的 VP8 和 VP9 编码器
  • libaom: AV1 编码器

音频编码器

  • libfdk-aac
  • aac

查看 FFmpeg 已安装的编码器

ffmpeg -encoders

使用方式#

ffmpeg [1] [2] -i [3] [4] [5]

[1] 全局参数

[2] 输入文件参数

[3] 输入文件

[4] 输出文件参数

[5] 输出文件

参数#

  • -c: 指定编码器
  • -c copy: 直接复制不经过重新编码,更快
  • -c:v: 指定视频编码器
  • -c:a: 指定音频编码器
  • -i: 指定输入文件
  • -an: 去除音频流
  • -vn: 去除视频流
  • -preset: 视频编码质量 ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow
  • -y: 不经过确认,输出时直接覆盖同名文件

更多:https://zh.m.wikipedia.org/zh-hans/FFmpeg


文件信息#

ffmpeg -i input.mp4

只显示元信息,干净
ffmpeg -i input.mp4 -hide_banner

转格式#

ffmpeg -i input.avi output.mp4

直接复制速度最快
ffmpeg -i input.avi -c copy output.mp4

-i 输入文件

-c copy 直接复制不转码速度更快

转码#

ffmpeg -i input.mp4 -c:v libx264 output.mp4

选择 H.265 编码器
ffmpeg -i input.mp4 -c:v libx265 output.mp4

-i 输入文件

-c 转换编码器

剪片#

ffmpeg -ss 00:00:00 -t 00:00:30 -i input.mp4 -vcodec copy -acodec copy output.mp4

-ss 开始时间

-t 截取到时间

-i 输入文件

码率#

本篇章过于专业,需要更深度的了解!这里只演示最简单的编码方式,不包括压片配置。

ABR (VBR) 二次编码#

ffmpeg -i input.mp4 -c:v libx264 -b:v 1M -pass 1 -f null /dev/null
ffmpeg -i input.mp4 -c:v libx264 -b:v 1M -pass 2 output.mp4

当然也可以仅 VBR 一次
ffmpeg -i input.mp4 -c:v libx264 -b:v 1M -pass 1 output.mp4

CBR 恒定码率#

压缩到 2M 码率
ffmpeg -i input.mp4 -b:v 2M output.mp4

压缩稳定到 2M 码率
ffmpeg -i input.mp4 -b:v 2M -bufsize 2M output.mp4

压缩稳定在 2M 比特率允许最大 2.5M 码率
ffmpeg -i input.mp4 -b:v 2M -bufsize 2M -maxrate 2.5M output.mp4

使用 libx264 解码器最小 1M 比特率,最大 2M 比特率,稳定在 1M 码率
ffmpeg -i input.mp4 -c:v libx264 -b:v 1M -minrate 1M -maxrate 2M -bufsize 1M output.mp4

-i 输入文件

-b 音频码率

-b 视频码率

-minrate 允许最小码率

-maxrate 允许最大码率

-bufsize 码率控制缓冲器

大小#

ffmpeg -i input.avi -fs 114M output.mp4

-i 输入文件

-fs 控制文件大小

分辨率#

ffmpeg -i input.mp4 -vf scale=1920:1080 output.mp4

保持长宽比是 -1
ffmpeg -i input.mp4 -vf scale=1920:-1 output.mp4

-i 输入文件
[保持长宽比 -1]

FPS#

ffmpeg -i input.avi -r 30 output.mp4

-i 输入文件

-r 帧率值

提取音频#

ffmpeg -i input.mp4 -aq 0 -f mp3 -vn output.mp3
ffmpeg -i input.mp4 -acodec aac -vn output.mp3

-i 输入文件

-f 输出格式

-vn 不包含视频

-aq 0 压缩质量

-acodec 设定声音编解码器

分离音视频#

分离视频

ffmpeg -i input.mp4 -vcodec copy -an output.mp4

分离 acc 格式

ffmpeg -i input.mp4 -acodec copy -vn output.m4a
ffmpeg -i m.m4a m.mp3

直接提取音频

ffmpeg -i mavel4.mp4 m.mp3

音视频合并#

ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -strict experimental output.mp4

-i 输入文件

-c 音频编码方式

-c 视频编码方式

压缩音频#

ffmpeg -i input.wav -b:a 64k -acodec mp3 -ar 44100 -ac 1 output.mp3

-i 输入文件

-b 码率

-ar 采样率

截图#

指定时间截图

ffmpeg -ss 00:11:45 -i input.mp4 -r 1 output.jpg 

从头开始抽帧截图

ffmpeg -i input.mp4 -r 1 -q:v 2 -f image2 output.jpg

-i 输入文件

-r 几秒一帧

-q 图像质量

-f 输出格式

封面#

视频封面

ffmpeg -i input.mp4 -i input.jpg -map 0 -map 1:0 -c copy -disposition:v:1 output.mp4

音频封面

ffmpeg -i input.mp3 -i input.jpg -map 0:0 -map 1:0 -codec copy -id3v2_version 3 \ 
-metadata:s:v title="Album cover" -metadata:s:v comment="Cover (front)" output.mp3

引用:
FFmpeg 视频处理入门教程

使用 ffmpeg 分离视频流和音频流

ffmpeg 常用参数说明及例子

码率控制(一):理解码率控制模式(x264,x264,vpx)

此文由 Mix Space 同步更新至 xLog
原始链接为 https://www.miaoer.net/posts/blog/ffmpeg


加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。