FFmpeg02:常用命令实战

命令分类

处理音视频的流程

基本信息查询命令

录制命令

录制屏幕

shell 复制代码
ffmpeg -f avfoundation -i 1 -r 30 out.yuv

ctrl+c结束

使用ffplay进行播放

shell 复制代码
# ffplay旧版本的写法
ffplay -s 2880x1800 -pix_fmt uyvy422 out.yuv
# ffplay7.0的写法
ffplay -f rawvideo -video_size 2880x1800 -pixel_format uyvy422 out.yuv

为什么上述ffmpeg录制的时候-i可以指定为1呢?

执行ffmpeg -f avfoundation -list_devices true -i ""可以看到avfoundation支持的设备:

录制声音

shell 复制代码
ffmpeg -f avfoundation -i :0 out.wav

:0表示音频设备

分解与复用命令

多媒体格式转换

shell 复制代码
# 格式转换,保留音视频
ffmpeg -i out.mp4 -vcodec copy -acodec copy out.flv
# 去掉音频
ffmpeg -i out.mp4 -an -vcodec copy out.h264

处理原始数据命令

提取YUV数据

shell 复制代码
ffmpeg -i out.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv

提取PCM数据

shell 复制代码
# 采样率rate为44100 声道channel为2
ffmpeg -i out.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm

播放pcm数据,由于pcm是裸流,需要指定采样率声道等信息

shell 复制代码
# 旧版ffmpeg
ffplay -ar 44100 -ac 2 -f s16le out.pcm
# ffplay7.0
ffplay -f s16le -ar 44100 -ch_layout stereo out.pcm

新版的ffmpeg中,用channel的layout布局来表示数量以及位置
常见 channel_layout 值一览

声道数 组成 说明
mono 1 C(中置) 常见于语音、讲解
stereo 2 L + R 左右声道,最常用
2.1 3 L + R + LFE(低频) 加了一个重低音
3.0 3 L + R + C 三声道(左、右、中)
4.0 4 L + R + C + S(环绕) 简易环绕布局
5.0 5 L + R + C + LS + RS 正常 5 声道系统(无低音)
5.1 6 L + R + C + LFE + LS + RS 最常见家庭影院布局
6.1 7 L + R + C + LFE + LS + RS + RC 带后中置的 6.1
7.1 8 L + R + C + LFE + LS + RS + LB + RB 多用于影院与游戏
quad 4 L + R + LS + RS 早期四声道
hexagonal 6 L + R + C + LFE + LS + RS 等同于 5.1
octagonal 8 环绕布局 影院音效或高端 VR

声道英文简写含义对照表

缩写 含义
L Left(左)
R Right(右)
C Center(中置)
LFE Low Freq Effects(低频/重低音)
LS Left Surround(左环绕)
RS Right Surround(右环绕)
LB Left Back(左后)
RB Right Back(右后)
RC Rear Center(后中置)
TFL Top Front Left(上前左)等(3D 声道扩展)

滤镜命令

shell 复制代码
# 裁剪视频 保留音频
ffmpeg -i out.mp4 -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy crop.mp4

裁剪与合并命令

拓展学习链接

裁剪

shell 复制代码
# 先解码再截取(精确)
ffmpeg -i out.mp4 -ss 00:00:00 -t 10 1.ts
# 先seek到某个位置再截取,快速但不精确
ffmpeg -ss 00:00:10 -i out.mp4 -t 10 1.ts
# 先seek到8秒位置的关键帧,再解码,然后解码2秒后,再开始截取,双重-ss保证快速和精确
ffmpeg -ss 00:00:08 -i out.mp4  -ss 00:00:02 -t 10 1.ts

-ss表示从第几秒开始截,

  • 如果-ss指定的开始时间超过输入文件的视频时长,则直接报错;
  • 假设-ss指定的时间点是非关键帧,
    • -ss-i前面,则先seek到关键帧,再往下读取,所以可能会有偏差,因为这是不解码的操作,相当于ffmpeg认为要快速seek到那个位置,而不是要精确
    • -ss-i后面,则从0解码,精确但是解码时间长

-t表示截取的时长,如果-t指定的时间超过视频时长,则尽可能截取

合并

shell 复制代码
ffmpeg -f concat -i input.txt concat.mp4

图片与视频互转命令

shell 复制代码
# 视频转图片
ffmpeg -i out.mp4 -r 1 -f image2 image-%3d.jpeg
# -r 表示每秒取一帧

# 图片转视频
ffmpeg -i image-%3d.jpeg image.mp4

直播推/拉流命令

shell 复制代码
# 推流
ffmpeg -re -i out.mp4 -c copy -f flv rtmp://server/live/streamName

# 拉流
ffmpeg -i rtmp://server/live/streamName -c copy dump.flv
相关推荐
无敌最俊朗@3 小时前
音视频播放的核心处理流程
ffmpeg
mortimer21 小时前
搞懂FFmpeg中2个桀骜不驯的参数:CRF 与 Preset
ffmpeg·音视频开发·视频编码
2401_841495642 天前
Windows 系统中ffmpeg安装问题的彻底解决
windows·python·ffmpeg·bug·语音识别·下载·安装步骤
八月的雨季 最後的冰吻2 天前
FFmpeg --15-视频解码: AVIO内存输入模式分析
ffmpeg·音视频
aqi002 天前
FFmpeg开发笔记(八十八)基于Compose的国产电视直播开源框架MyTV
android·ffmpeg·音视频·直播·流媒体
present12272 天前
一段音频/视频分离成人声与伴奏,Windows + Anaconda 快速跑通 Spleeter(离线可用)
windows·职场和发展·ffmpeg·音视频·娱乐·媒体
fxshy3 天前
python使用ffmpeg对视频进行转码
python·ffmpeg·音视频
zhangzhangkeji3 天前
FFMPEG - 6:合并、提取音视频;截取、连接音视频,
ffmpeg·音视频
mortimer3 天前
FFmpeg 拼接视频-记录我踩过的坑
ffmpeg·音视频开发
aqi003 天前
FFmpeg开发笔记(八十七)采用Kotlin的手机开源播放器VLC-Android
android·ffmpeg·音视频·流媒体