序#
最近发现了并使用了 FFmpeg 发现他十分的强大,能做到各种音视频操作,有的软件也是引用的 FFmpeg 主要是他是免费开源不需要授权的工具,这里就简单做一下 FFmpeg 常见的几个命令笔记,帮助小白读者轻松转换编码自己的视频!这里大部分内容都是参考网络上有的内容以标记引用源。
来一起来玩一下吧 ฅ՞・ﻌ・՞ฅ
安装 FFmpeg#
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 视频码率
-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 视频编码方式
压缩音频#
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 视频处理入门教程
码率控制(一):理解码率控制模式(x264,x264,vpx)
此文由 Mix Space 同步更新至 xLog
原始链接为 https://www.miaoer.net/posts/blog/ffmpeg