当前位置: 首页 > news >正文

ffmpeg命令和ffplay命令详解

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

http://www.lryc.cn/news/607748.html

相关文章:

  • 垃圾收集器ParNewCMS与底层三色标记算法详解
  • 【云计算】云主机的亲和性策略(四):云主机组
  • VAST视频广告技术实现:从零开始搭建视频广告投放系统
  • 【20min 急速入门】使用Demucs进行音轨分离
  • 【云计算】云主机的亲和性策略(三):云主机 宿主机
  • 【Android】RecyclerView实现新闻列表布局(1)适配器使用相关问题
  • MySQL 运算符
  • 【Android】使用 Intent 传递对象的两种序列化方式
  • 【Android】进度条ProgressBar 可拖拽进度条Seekbar
  • Javaweb————Apache Tomcat服务器介绍及Windows,Linux,MAC三种系统搭建Apache Tomcat
  • Vue 详情模块 4
  • 分布式微服务--Nacos作为配置中心(二)
  • Text2SQL:如何通过自然语言直接获取数据,打破技术壁垒?
  • opencv自定义滤波
  • 入门MicroPython+ESP32:开启科技新旅程
  • 云原生三剑客:Kubernetes + Docker + Spring Cloud 实战指南与深度整合
  • Diffusion模型生产化指南:用LoRA技术快速定制企业专属AI画师
  • 电商API接口的优势、数据采集方法及功能说明
  • AIDL当Parcelable序列化的数据类通信时报“Class not found when unmarshalling“找不到该类时的解决方案
  • 存储成本深度优化:冷热分层与生命周期管理——从视频平台年省200万实践解析智能存储架构
  • Linux网络编程【UDP网络通信demon】
  • 编程与数学 03-002 计算机网络 19_网络新技术研究
  • 【DeepSeek-R1 】分词系统架构解析
  • fastGEO v1.7.0 大更新,支持PCA、差异分析、火山图、热图、差异箱线图、去批次等分析
  • 【05】VisionMaster入门到精通——圆查找
  • Spring Boot 全 YAML 配置 Liquibase 教程
  • 决策树算法:三大核心流程解析
  • 嵌入式系统的中断控制器(NVIC)
  • SpringCloud实战:机器人对战系统架构
  • 《软件测试与质量控制》实验报告二 单元测试