ffmpeg命令和ffplay命令详解

发布于:2025-08-04 ⋅ 阅读:(9) ⋅ 点赞:(0)

FFmpeg命令

FFmpeg 是一个强大的跨平台多媒体处理工具,用于录制、转换和流式传输音视频内容。以下是 FFmpeg 常用命令的分类介绍:


一、基础命令结构

ffmpeg [全局选项] {[输入文件选项] -i 输入文件} ... {[输出文件选项] 输出文件} ...

二、常用功能分类

1. 格式转换

# 视频转码
ffmpeg -i input.mp4 output.avi

# 音频提取
ffmpeg -i video.mp4 -vn -acodec copy audio.aac

# 视频转GIF
ffmpeg -i input.mp4 -vf "fps=10,scale=320:-1" output.gif

2. 视频处理

# 裁剪视频
ffmpeg -i input.mp4 -ss 00:01:00 -t 10 -c copy output.mp4

# 调整分辨率
ffmpeg -i input.mp4 -s 1280x720 output.mp4

# 加速/减速视频
ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" 2x_speed.mp4  # 2倍速
ffmpeg -i input.mp4 -vf "setpts=2.0*PTS" half_speed.mp4 # 0.5倍速

3. 音频处理

# 调整音量
ffmpeg -i audio.mp3 -af "volume=1.5" louder.mp3

# 合并音视频
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac output.mp4

# 提取音频片段
ffmpeg -i audio.wav -ss 00:00:30 -t 10 clip.mp3

4. 高级编辑

# 添加水印
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=10:10" output.mp4

# 视频拼接
echo "file 'part1.mp4'\nfile 'part2.mp4'" > list.txt
ffmpeg -f concat -i list.txt -c copy merged.mp4

# 添加字幕
ffmpeg -i video.mp4 -vf subtitles=sub.srt output.mp4

5. 流媒体操作

# 推RTMP流
ffmpeg -re -i input.mp4 -c:v libx264 -c:a aac -f flv rtmp://server/live/stream_key

# 拉取直播流保存
ffmpeg -i rtmp://server/live/stream -c copy output.mp4

# 屏幕录制 (Linux)
ffmpeg -f x11grab -s 1920x1080 -i :0.0 output.mp4

6. 编解码控制

# H.264编码
ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4

# HEVC编码
ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4

# 无损压缩
ffmpeg -i input.mp4 -c:v libx264 -crf 0 lossless.mp4


三、常用选项详解

选项 说明
-i 指定输入文件
-c:v 设置视频编解码器 (libx264, libx265, copy)
-c:a 设置音频编解码器 (aac, mp3, copy)
-ss 开始时间定位 (格式: HH:MM:SS)
-t 持续时间 (秒数或 HH:MM:SS)
-vf 视频滤镜 (scale, crop, overlay等)
-af 音频滤镜 (volume, atempo等)
-r 设置帧率 (如: -r 30)
-b:v 视频比特率 (如: -b:v 1M)
-crf 质量系数 (0-51, 值越小质量越高)
-preset 编码速度/质量平衡 (ultrafast, medium, veryslow)


四、实用示例

1. 压缩视频

ffmpeg -i input.mp4 -c:v libx264 -crf 28 -preset slow -c:a copy output.mp4

2. 提取关键帧

ffmpeg -i video.mp4 -vf "select=eq(pict_type\,I)" -vsync vfr keyframes_%03d.jpg

3. 图片合成视频

ffmpeg -framerate 24 -i img_%03d.png -c:v libx264 -pix_fmt yuv420p output.mp4

4. 音频格式批量转换

for f in *.wav; do ffmpeg -i "$f" "${f%.wav}.mp3"; done

5. 硬件加速 (NVIDIA)

ffmpeg -hwaccel cuda -i input.mp4 -c:v h264_nvenc output.mp4

五、调试技巧

  1. 查看支持的编解码器

    ffmpeg -codecs
  2. 检查媒体信息

    ffmpeg -i input.mp4
  3. 测试编码速度

    ffmpeg -i input.mp4 -f null -  # 输出到空设备测试处理速度
  4. 错误日志

    ffmpeg -i input.mp4 output.mp4 -report  # 生成详细日志

FFplay命令

FFplay 是 FFmpeg 项目中的一个简易媒体播放器,主要用于测试和预览。它支持各种音视频格式和协议,并能展示详细的媒体信息。

基础命令结构

ffplay [options] input_file

常用选项

基本控制

选项 描述
-x width 设置显示窗口宽度
-y height 设置显示窗口高度
-fs 全屏模式
-an 禁用音频
-vn 禁用视频
-sn 禁用字幕
-ss pos 定位到指定时间位置 (HH:MM:SS)
-t duration 播放指定时长
-loop n 循环播放次数 (0=无限循环)
-autoexit 播放结束后自动退出
-exitonkeydown 按任意键退出
-exitonmousedown 鼠标点击退出

播放控制

快捷键 功能
空格 或 p 暂停/继续
q 或 ESC 退出
f 全屏切换
m 静音切换
9 音量减小
0 音量增大
快进10秒
后退10秒
快进1分钟
后退1分钟
PageUp 快进10分钟
PageDown 后退10分钟
鼠标双击 全屏切换

显示信息

选项 描述
-stats 显示播放统计信息
-fast 非标准化规范的多媒体兼容优化
-genpts 生成pts
-sync type 设置主时钟同步类型 (audio/video/ext)
-ast stream 选择音频流
-vst stream 选择视频流
-sst stream 选择字幕流
-showmode mode 设置显示模式 (0=视频, 1=波形, 2=频谱)

高级处理

选项 描述
-vf filtergraph 设置视频滤镜
-af filtergraph 设置音频滤镜
-codec:media codec 强制使用特定解码器
-window_title title 设置窗口标题
-left title 设置窗口x坐标
-top title 设置窗口y坐标
-nodisp 禁用图形显示 (纯音频)

实用示例

基础播放

# 播放本地视频文件
ffplay input.mp4

# 播放网络流
ffplay rtmp://live.example.com/stream

# 播放音频文件 (无视频窗口)
ffplay -nodisp audio.mp3

播放控制

# 从30秒开始播放
ffplay -ss 00:00:30 input.mp4

# 循环播放3次
ffplay -loop 3 video.mp4

# 播放10秒后自动退出
ffplay -t 10 input.mp4

显示设置

# 指定窗口大小
ffplay -x 800 -y 600 video.mp4

# 全屏播放
ffplay -fs input.mp4

# 显示播放统计信息
ffplay -stats movie.mkv

滤镜应用

# 旋转视频90度
ffplay -vf "transpose=1" input.mp4

# 调整对比度和亮度
ffplay -vf "eq=contrast=1.5:brightness=0.05" video.mp4

# 音频可视化(波形)
ffplay -showmode 1 audio.mp3

高级用法

# 播放原始YUV数据
ffplay -f rawvideo -video_size 1920x1080 -pixel_format yuv420p video.yuv

# 播放原始PCM音频
ffplay -f s16le -ar 44100 -ac 2 audio.pcm

# 强制使用特定解码器
ffplay -vcodec h264 -acodec aac input.mp4

# 多路流选择
ffplay -ast 1 -vst 0 input.mkv  # 播放第2个音频流和第1个视频流

调试与分析

# 显示帧信息
ffplay -debug vis_mb_type input.mp4

# 显示时间戳
ffplay -vf "drawtext=text='%{pts}':x=20:y=20:fontsize=24:fontcolor=white" input.mp4

# 显示运动向量
ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb

特殊源播放

# 播放测试视频
ffplay -f lavfi testsrc

# 播放颜色条
ffplay -f lavfi smptebars

# 播放正弦波音频
ffplay -f lavfi "sine=frequency=1000"

键盘控制参考

按键 功能
a 循环音频通道
v 循环视频通道
t 循环字幕通道
c 循环节目
w 循环视频滤镜
s 逐帧播放
e 逐帧后退
c 随机跳转
/ 音量减小
* 音量增大
- 减速播放
+ 加速播放
; 上一章
' 下一章

FFplay 是强大的多媒体调试工具,特别适合开发者测试编解码器、检查媒体文件问题或快速预览媒体内容。


网站公告

今日签到

点亮在社区的每一天
去签到