FFmpeg 命令

一、录制命令

1.1、获取支持的设备

要录制屏幕,首先要知道当前笔记本支持的输入设备。

ffmpeg -devices

Devices:
 D. = Demuxing supported
 .E = Muxing supported
 --
 D  avfoundation    AVFoundation input device
 D  lavfi           Libavfilter virtual input device
  E sdl,sdl2        SDL2 output device

通过 ffmpeg -devices 可以知道我的 Mac 的输入设备:avfoundation

查询 avfoundation 视频和音频的索引

ffmpeg -f avfoundation -list_devices true -i ""

[AVFoundation input device @ 0x7fb5b340d6c0] AVFoundation video devices:
[AVFoundation input device @ 0x7fb5b340d6c0] [0] FaceTime HD Camera
[AVFoundation input device @ 0x7fb5b340d6c0] [1] Capture screen 0
[AVFoundation input device @ 0x7fb5b340d6c0] AVFoundation audio devices:
[AVFoundation input device @ 0x7fb5b340d6c0] [0] MacBook Pro麦克风

1.2、采集屏幕

ffmpeg -f avfoundation -i 1: -r 30 out.yuv
  • -f 指定从哪里采集数据 avfoundation
  • -i 1 表示从屏幕获取数据,0 表示从摄像头获取数据
  • -r 表示视频的帧率
  • 播放采集视频数据
ffplay out.yuv

这样播放 yuv 格式的原始视频是有问题的,因为没有指定视频的分辨率和视频的格式

ffplay -s 3360x2100 -pix_fmt uyvy422  out.yuv
  • -s 表示视频的分辨率。

如果 -s 不指定

[IMGUTILS @ 0x700001e58808] Picture size 0x0 is invalid
studyout.yuv: Invalid argument

如果不指定 -pix_fmt 就会出现花屏问题。

  • -pix_fmt 表示视频的格式

1.3、采集音频

利用 Macbook 的麦克风,采集音频数据。

ffmpeg -f avfoundation -i :0 out.wav
  • -f 指定从哪里采集数据 avfoundation
  • -i 指定 avfoundation 的索引,在 : 前面表示视频索引,在 : 后面表示音频索引

二、分解与复用命令

2.1、将 mp4 转化为 flv

ffmpeg -i testfile.mp4 -vcodec copy -acodec copy testfile.flv

or

ffmpeg -i testfile.mp4 -codec copy  testfile.flv

2.2、将 mp4 文件的中视频抽取出来

ffmpeg -i testfile.mp4 -vcodec copy -an testfile.flv

2.3、将 mp4 文件中的音频抽取出来

ffmpeg -i testfile.mp4 -vn -acodec copy testfile.flv
  • -an 表示阻止文件的所有音频流
  • -an 表示阻止文件的所有视频流
  • -acodec 设置音频编解码器, copy 表示
  • -vcodec 设置视频编解码器
  • -c 表示编解码器,包括音视频编解码器

三、抽取音视频原始数据

3.1、抽取 mp4 文件的原始 yuv 视频数据

ffmpeg -i testfile.mp4 -an -codec:v rawvideo -pix_fmt yuv420p out.yuv
  • -codec:v 指定视频编解码器 rawvideo 表示原始视频数据
  • -codec:a 指定音频编解码器

3.2、抽取 mp4 文件的原始 pcm 音频数据

ffmpeg -i testfile.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm
  • -ar 指定采样率
  • -ac 指定通道数
  • -f 指定数据格式 s16le 有符号,16字节,little end

播放:

ffplay -ar 44100 -ac 2 -f s16le out.pcm

四、滤镜命令

4.1、设置声音滤镜

ffmpeg -i /Users/liaowj/Documents/media/study/Complicated.mp3  -vf volume=1 -acodec copy  volume.mp3
  • -vf 表示视频滤镜

五、视频裁剪命令

5.1、裁剪命令

从某一个位置00:01:10位置开始裁剪一个 mp4 文件,裁剪时间 10 s。

ffmpeg -i haha.mp4 -ss 00:01:10 -t 10 out.ts
  • -t 表示限制从输入文件读取数据的时长,单位为 s。
  • -ss 表示拖动到某一个时间位置,格式为:12:03:45

5.2、合并视频命令

合并两个视频文件

ffmpeg -f concat -i input.txt out.mp4
  • -f 指定输入或输出的file format,concat 是 format 的其中一种

concat

  • -i 指定数据的数据源

  • input.txt 指定了两个文件的路径,格式为 file absolutefilepath

file out.mp4
file out1.mp4

六、视频与图片转换命令

6.1、将一个视频每一帧图片提取出来,fps = 1

ffmpeg -i testfile.mp4 -r 1 -f image2 foo-%03d.jpeg
  • -r 1s 为一帧
  • -f 指定输出文件的格式为 image2

6.2、将一组图片转化为一个视频文件

ffmpeg -f image2  -i foo-%03d.jpeg  out.avi

你可能感兴趣的:(FFmpeg 命令)