跳至主要內容

ffmpeg - 基本命令

Kamimika...大约 4 分钟工具ffmpeg笔记

FFmpegopen in new window是一个免费、开源的多媒体软件框架,也是几乎所有音视频多媒体录制转换工具的核心

本文从网络摘录了常用的一些 ffmpeg 命令,便于查找使用

推荐教程

ffmpeg

视频 = 容器(container) ,包含 视频(video)音频(audio)字幕

文件的后缀名反映了它的容器格式,比如 mp4avimkvmovflv 等。

视频和音频需要通过编码器以指定编码格式进行编码,比如 h264aacmp3 等。

查看支持的格式

  • 查看支持的编码格式 ffmpeg -codecs
  • 查看支持的编码器 ffmpeg -encodecs,可在-vcodec后面接的参数
  • 查看支持的解码器 ffmpeg -decoders
  • 查看支持的封装格式 ffmpeg -formats,可在-f后面接的参数式
  • 查看支持的滤镜 ffmpeg -filters,可在-vf后面接的参数

基本命令

格式:

ffmpeg [全局参数] [输入文件参数] -i [输入文件] [输出文件参数] [输出文件]

全局参数

选项描述
-y无需确认,直接覆盖输出文件
-hide_banner隐藏版本信息(隐藏冗余输出)
-loglevel设置日志级别,默认是 info,可选 quietpanicfatalerrorwarninginfoverbosedebug
-hwaccel指定硬件加速
-benchmark显示性能测试信息
-stats显示统计信息
选项描述
-hwaccels显示支持的硬件加速
-version显示版本信息
-formats显示支持的格式
-codecs显示支持的编码器
-decoders显示支持的解码器
-devices显示支持的设备
-protocols显示支持的协议
-filters显示支持的滤镜
-pix_fmts显示支持的像素格式
-sample_fmts显示支持的采样格式
-layouts显示支持的布局
-colors显示支持的颜色
-sources显示支持的输入源
-sinks显示支持的输出源

输入文件参数

选项描述
-f指定输入文件格式
-ss从指定时间开始播放
-to从指定时间结束播放
-t指定播放时长

输出文件参数

选项描述
-c指定编码器
-c copy复制输入流,不重新编码(速度快)
-c:v指定视频编码器
-c:a指定音频编码器
-b指定比特率
-minrate ???k -maxrate ???k -bufsize ???k指定最小码率,最大码率,缓冲区大小
-r指定帧率
-vf scale=a:b指定分辨率为 axb-1 表示自动计算保持原有比例;-2 表示保持原有比例并只接受偶数)
-aspect a:b指定宽高比为 axb,如 16:9
-vn禁止视频输出
-an禁止音频输出
-sn禁止字幕输出
-dn禁止数据输出
选项描述
-metadata设置元数据
-attach添加附件
-disposition设置输出流的默认 Disposition
-map指定输入流
-map_metadata指定元数据流
-map_chapters指定章节流
-map_chapters指定字幕流
-map_metadata指定元数据流
-map_chapters指定章节流
-map_chapters指定字幕流
-metadata设置元数据
-attach添加附件
-disposition设置输出流的默认 Disposition
-f指定输出文件格式

示例

查看文件信息

ffmpeg -i video.mp4

转换容器格式

只改变容器格式,不改变编码格式

ffmpeg -i video.mp4 -c copy video.avi

转换编码格式

ffmpeg -i video.mp4 -c:v libx264 -c:a aac output.mp4

转换分辨率

ffmpeg -i video.mp4 -vf scale=640:360 output.mp4

提取音频

ffmpeg -i video.mp4 -vn -c:a copy audio.m4a

添加音轨

ffmpeg -i video.mp4 -i audio.m4a -c copy -map 0:v -map 1:a output.mp4

裁剪视频

ffmpeg -i video.mp4 -ss 00:00:00 -t 00:00:10 output.mp4 #输出为视频
ffmpeg -i video.mp4 -ss 00:00:00 -t 00:00:10 output_%3d.jpg #输出为图片序列

视频截图

ffmpeg -i video.mp4 -ss 00:00:00 -vframes 1 output.jpg

帧序列合成视频或 GIF

ffmpeg -r 30 -f image2 -i %04d.png -crf 15 output.mp4
  • 其中,-r 30指定输出视频帧率为 30fps
  • %04d表示命名顺序0001, 0002, …
    %03d表示命名顺序001, 002, …
    %d表示命名顺序1, 2, …, 10, …
  • -crf 15表示清晰度为 15,值越小越清晰(推荐值 18-25)

生成透明 GIF

ffmpeg -i input.mp4 -filter_complex "[0:v]split[a][b]; [a]palettegen=transparency_color=ffffff[p]; [b][p]paletteuse" output.gif
  • -filter_complex参数用于指定多个过滤器,多个过滤器之间用;分隔。
  • [0:v]表示选择视频流 0
  • split[a][b]表示分离视频流为两个流,分别命名为ab
  • [a]palettegen=transparency_color=ffffff[p]表示生成调色板,透明色为白色,并命名为p
  • [b][p]paletteuse表示使用调色板p

ffplay

播放视频

播放视频

ffplay video.mp4

播放完自动退出

ffplay -autoexit video.mp4
上次编辑于:
贡献者: wzh656
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.3.2