FFMEPG常见命令查询

基本参数

表格1:主要参数

参数说明
-i设定输入流
-f设定输出格式(format) 高于后缀名
-ss开始时间
-t时间长度
codec编解码

表格2:音频参数

参数说明
-aframes设置要输出的音频帧数
-f音频帧深度
-b:a音频码率
-ar设定采样率
-ac设定声音的Channel数
-acodec设定声音编解码器,如果用copy表示原封不动的复制音频流
-an不处理音频
-af音频过滤器

表格3:视频参数

参数说明
-pix_fmt提取像素格式
-vframes设置要输出的视频帧数
-framerate视频帧率(更多用于与 FFmpeg 的过滤器配合使用,特别是在处理视频时需要指定帧率的场景。)
r显式地设置输出视频的帧率
-b设定视频码率
-s指定视频分辨率->直接处理原始视频帧或图像序列
video_size某些特定的 FFmpeg 过滤器或输出格式中更常见,尤其是在处理封装格式(如 MP4、AVI 等)时。
-b:v视频码率
-vn不处理视频
-aspectaspect 设置横纵比 4:3 16:9 或 1.3333 1.7777
-vcodec设定视频编解码器,如果用copy表示原封不动的复制视频流
-vf视频过滤器
-vbsf用于指定视频比特流过滤器(video bitstream filter)。比特流过滤器主要用于在不进行实际解码和重新编码的情况下对视频数据流进行处理和修改。这可以包括修复损坏的数据流、重新组织数据包、或者执行其他比特流级别的操作。

实战基本参数

提取音视频

  • 保留封装格式
    • 音频
      ffmpeg -i .\test.mp4 -acodec copy -vn audio.mp4

注解:只有音频 视频显示波形

    • 视频
      ffmpeg -i .\test.mp4 -vcodec copy -an video.mp4

无声音

  • 提取视频()

第一要查看输入视频的编解码协议
第二要查看编解码协议的编解码器
ffmpeg -codecs |findstr h264(windows 系统)一般最右边括号里面选一个就行 一般第一个
ffmpeg -codecs |grep h264(linuxs系统)

    • 保留格式(查看编码)
      ffmpeg -i .\test.mp4 -vcodec copy -an test_copy.h264
    • 强制格式(改变编码)
      ffmpeg -i .\test.mp4 -vcodec libx264 -an test.h264
    • 音频
    • 保留格式
      ffmpeg -i .\test.mp4 -acodec copy -vn test_copy.aac
    • 强制格式
      ffmpeg -i .\test.mp4 -acodec aac -vn test.aac

封装命令

  • 保持编码格式
    ffmpeg -i test.mp4 -codec copy test_copy2.ts
  • 改变编码格式
    ffmpeg -i test.mp4 -vcodec libx265 -acodec libmp3lame out_h265_mp3.mkv
    -修改帧率
    ffmpeg -i test.mp4 -r 15 output2.mp4
    -修改视频码率
    ffmpeg -i test.mp4 -b:v 400k output_bvflv
  • 修改音频码率:
    ffmpeg -i test.mp4 -b:a 192k output_ba.mp4
  • 修改音视频码率:
    ffmpeg -i test.mp4 -b:v 400k -b:a 192k output_bva.mp4
    修改视频分辨率:
  • ffmpeg -i test.mp4 -s 480x270 output_480x270.mp4
    修改音频采样率:
  • ffmpeg -i test.mp4 -ar 44100 output_44100hz.mp4

一个视频质量由码率 分辨 帧数决定 音频为 音频采样率(一般由决定音频帧) 音频码率 音频深度(分辨率) 通道数

提取和播放数据

提取YUV
  • 提取3秒数据,分辨率转为320x240
    ffmpeg -i test.mp4 -t 3 -pix_fmt yuv420p -s 320x240 yuv420p_320x240.yuv
提取RGB
  • 提取3秒数据,分辨率转为320x240
    ffmpeg -i test.mp4 -t 3 -pix_fmt rgb24 -s 320x240 rgb24_320x240.rgb
提取PCM

ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -f s16le 48000_2_f16le.pcm

RGB和YUV之间的转换

ffmpeg -s 320x240 -pix_fmt yuv420p -i yuv420p_320x240.yuv -pix_fmt rgb24 rgb24_320x240_2.rgb

播放YUV数据

ffplay -pixel_format yuv420p -video_size 320x240 -framerate 5 yuv420p_320x240.yuv

播放RGB数据

ffplay -pixel_format rgb24 -video_size 320x240 -framerate 5 -i rgb24_320x240.rgb

播放PCM数据

ffplay -ar 48000 -ac 2 -f s32le 48000_2_s32le.pcm

过滤器参数

裁剪和拼接 (推荐用ts格式)

ffmpeg -i 1.mp4 -codec copy -vbsf h264_mp4toannexb 1.ts
ffmpeg -i 2.mp4 -codec copy -vbsf h264_mp4toannexb 2.ts
ffmpeg -i 3.mp4 -codec copy -vbsf h264_mp4toannexb 3.ts

  • 拼接(用字符串)
    (1)ffmpeg -i "concat:1.ts|2.ts|3.ts" -codec copy out_ts.mp4
    (2)ffmpeg -f concat -i list.txt -codec copy out_ts2.mp4
    这个txt文件为

file ‘1.ts’
file ‘2.ts’
file ‘3.ts’

对于音视频参数不一样的情况

视频分辨率可以不同,但是编码格式需要统一。
音频编码格式需要统一,音频参数(采样率/声道等)也需要统一。

图片和视频
  • 单独帧情况(关于动图 后缀名你设置)
    ffmpeg -i test.mp4 -y -f image2 -ss 00:00:02 -vframes 1 -s 640x360 test.jpg

-i:指定输入文件。
-y:覆盖输出文件。
-f image2:指定输出格式为图片。
-ss:指定起始时间(00:00:02 表示从视频的第2秒开始)。
-vframes 1:指定截取1帧。
-s:指定输出图片的分辨率(640x360)

    • (关于动图 后缀名你设置)
      你得额外指定-t -r 后缀名为.git
      ffmpeg -i test.mp4 -t 5 -s 640x360 -r 15 test.gif
  • 多帧
    ffmpeg -i test.mp4 -t 5 -s 640x360 -r 15 frame%03d.jpg

-t 5:指定处理视频的时长(5秒)(持续时长)。不指定 就是整个视频
-s 640x360:指定输出图片的分辨率。
-r 15:指定帧率(每秒15帧)。
frame%03d.jpg:指定输出文件名格式,%03d 表示帧编号,从001开始 C语言的风格

  • 多帧转为图片
    ffmpeg -f image2 -i frame%03d.jpg -r 25 video.mp4

-f image2:指定输入格式为图片序列。

图片裁剪

基本语法:crop=ow:oh:x:y :keep_aspect

ow(output width):指定输出视频的宽度。
oh(output height):指定输出视频的高度。
x:裁剪区域左上角的 X 坐标(相对于输入视频的左上角)。
y:裁剪区域左上角的 Y 坐标(相对于输入视频的左上角)。
keep_aspect 是一个可选参数,用于保持原始视频的宽高比。
ffmpeg -i input.mp4 -filter:v "crop=640:360:640:360" output.mp4
这个命令会从原始视频的中间位置(640, 360)开始裁剪出一个 640x360 的视频区域。

文字水印
  • ffmpeg -i input.mp4 -vf "drawtext=fontsize=100/fontfile=FreeSerif.ttf/text='hello world'/fontcolor=green:box=1:boxcolor=yellow"

-i input.mp4:指定输入文件是 input.mp4。
-vf:指定对视频帧应用的视频滤镜(video filter)。
drawtext=fontsize=100:设置文本水印的字体大小为 100。
fontfile=FreeSerif.ttf:指定用于文本水印的字体文件是 FreeSerif.ttf。这个字体文件需要在你的系统中可用,或者提供它的完整路径。
text=‘hello world’:设置文本水印的内容为 ‘hello world’。
fontcolor=green:设置文本水印的颜色为绿色。
box=1:指定为文本水印绘制一个边框。
boxcolor=yellow:设置文本水印边框的颜色为黄色。

图片水印

ffmpeg -i input.mp4 -vf "movie=logo.png[watermark];[in][watermark] overlay=10:10[out]" output.mp4

-i input.mp4:指定输入文件为 input.mp4。
-vf:指定对视频帧应用的视频滤镜链。
movie=logo.png[watermark]:加载名为 logo.png 的图片文件,并将其引用名称设置为 watermark。
[in][watermark] overlay=10:10[out]:
[in]:表示输入视频流。
[watermark]:表示加载的图片水印。
overlay:指定将水印叠加到视频流上。
=10:10:设置水印的起始位置,x 坐标为 10,y 坐标为 10。
[out]:指定叠加后的视频流名称。

ffplay -i input.mp4 -vf " movie=logo.png[watermark];[in][watermark]overlay=x=mod(50*t\,main_w):y=abs(sin(t))*0.7[out]"

movie=logo.png[watermark]:加载 logo.png 图片文件,并将其引用名称设置为 watermark。
[in][watermark]overlay=x=mod(50t,main_w):y=abs(sin(t))0.7[out]:
in:表示输入视频流。
watermark:表示上面加载的图片水印。
overlay:将水印图片叠加到视频流上。
x=mod(50
t,main_w):设置水印的 x 坐标,使其在视频宽度内按时间 t (以秒为单位)进行周期性移动。mod(50
t,main_w) 表示水印每 50 秒移动一个视频宽度的距离。
y=abs(sin(t))*0.7:设置水印的 y 坐标,使其根据正弦函数 sin(t) 的值在视频高度的 0.7 倍范围内上下波动。
out:指定叠加后的输出视频流。

  • 画中画
    ffplay -i input.mp4 -vf "movie=sub_320x240.mp4[sub];[in][sub]overlay=x=20:y=20[out]"

-i input.mp4:指定输入文件是 input.mp4。
-vf:指定对视频帧应用的视频滤镜链(video filtergraph)。
movie=sub_320x240.mp4[sub]:加载名为 sub_320x240.mp4 的视频文件,并将其引用名称设置为 sub。这个子视频将被用作水印或覆盖层。
[in][sub]overlay=x=20:y=20:将输入视频流([in])和子视频流([sub])进行叠加(overlay)。x=20 和 y=20 参数指定了子视频在主视频上的起始位置,即子视频左上角的 x 坐标为 20,y 坐标为 20。
[out]:指定叠加后的视频流名称,用于输出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/75247.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java-对比两组对象找出发生变化的字段工具-支持枚举映射-支持时间-支持显示对应字段中文描述-嵌套list等场景

实体字段比较器(对比两组对象找出发生变化的字段工具类开发) 支持枚举映射 支持时间 支持显示对应字段中文描述 支持嵌套list等场景 下载地址: Java-对比两组对象找出发生变化的字段工具-支持枚举映射-支持时间-支持显示对应字段中文描述-嵌…

15. git push

基本概述 git push 的作用是:把本地分支的提交推送到远程仓库。推送分支需要满足快进规则(Fast-Forward),即远程分支的最新提交必须是本地分支的直接祖先,这个是通过哈希值值进行判断的。 基本用法 1.完整格式 git…

训练数据清洗(文本/音频/视频)

多数据格式的清洗方法 以下是针对多数据格式清洗方法的系统性总结,结合Python代码示例: 一、数据清洗方法总览(表格对比) 数据类型核心挑战关键步骤常用Python工具文本非结构化噪声去噪→分词→标准化→向量化NLTK, SpaCy, Jie…

Python标准库json完全指南:高效处理JSON数据

一、json库概述 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,Python的json模块提供了JSON数据的编码和解码功能。该模块可以将Python对象转换为JSON字符串(序列化),也可以将JSON字符串转换为Python对象&#xf…

微软推出首款量子计算芯片Majorana 1

全球首款拓扑架构量子芯片问世,2025年2月20日,经过近20年研究,微软推出了首款量子计算芯片Majorana 1,其宣传视频如本文末尾所示。 微软表示,开发Majorana 1需要创造一种全新的物质状态,即所谓的“拓扑体”…

【QT】QT中的文件IO

QT中的文件IO 一、有关文件IO的类二、步骤1、定义QFile的对象,与要读写的文件绑定在一起2、打开文件3、读写文件1)读取文件2)写入文件 4、关闭文件5、示例代码: 三、QString和QByteArray之间的转换1、方法2、示例代码: 四、QFileI…

Nginx 499 错误的原因及解决方法

Nginx 499 错误的原因及解决方法 原因 客户端超时: 客户端在等待服务器响应时超时,导致连接被关闭。 解决方法:优化服务端响应时间,或调大客户端的连接超时时间。 服务端响应过慢: 后端服务处理请求时间过长。 解决方法…

Smith-Waterman 算法(C++实现)

本文实现Smith-Waterman 算法案例,用于局部序列比对。该算法是生物信息学中用于寻找两个 DNA、RNA 或蛋白质序列之间最优局部比对的经典算法,广泛应用于序列相似性分析和功能预测。 问题描述 给定两个生物序列 seq1 和 seq2,如何找到它们的最…

安卓玩机工具-----安卓机型通用 无损备份与恢复数据的工具BackupToolkit 操作过程

常规安卓机型数据备份与恢复的方法及工具 安卓设备的数据备份与恢复是保护个人数据的重要手段之一。以下是几种常用的方法和工具: 方法一:利用内置的云服务进行备份 许多安卓设备提供了内置的云服务,例如华为手机可以通过“华为云空间”来…

oracle 动态性能视图

Oracle 数据库中的 V$SQLAREA 是一个动态性能视图(Dynamic Performance View),用于记录共享池(Shared Pool)中所有 SQL 语句的统计信息。每个 SQL 语句在共享池中存储为一个游标(Cursor)&#x…

OceanBase V4.3.5 上线全文索引功能,让数据检索更高效

近日,OceanBase 4.3.5 BP1 版本正式推出了企业级全文索引功能。该版本在中文分词、查询效率及混合检索能力上进行了全面提升。经过自然语言模式和布尔模式在不同场景下的对比测试,OceanBase 的全文索引性能明显优于 MySQL。 点击下载 OceanBase 社区版…

海康摄像头AI报警、移动侦测报警等通过Ehome/ISUP协议上报到LiveNVR流媒体平台时如何进行报警配置

海康摄像头AI报警、移动侦测报警等通过Ehome/ISUP协议上报到LiveNVR流媒体平台时如何进行报警配置 1、LiveNVR介绍2、如何配置海康摄像头、录像机通过Ehome/ISUP注册到LiveNVR设备 EHOME 接入配置示例设备 ISUP 接入配置示例直播流接入类型 海康ISUP海康 ISUP 设备ID启用保存 3…

golang gmp模型分析

思维导图: 1. 发展过程 思维导图: 在单机时代是没有多线程、多进程、协程这些概念的。早期的操作系统都是顺序执行 单进程的缺点有: 单一执行流程、计算机只能一个任务一个任务进行处理进程阻塞所带来的CPU时间的浪费 处于对CPU资源的利用&…

Redis基础指令(Windows)

1.cmd命令行启动redis 直接cmd打开整个文件 1.1.启动server 输入指令: redis-server.exe redis.windows.conf 会进入serve端 1.2.启动客户端 !!重新打开一个cmd,方法和上面一样!! 之后输入 redis-…

vue:前端预览 / chrome浏览器设置 / <iframe> 方法预览 doc、pdf / vue-pdf 预览pdf

一、本文目标 <iframe> 方法预览 pdf 、word vue-pdf 预览pdf 二、<iframe> 方法 2.1、iframe 方法预览需要 浏览器 设置为&#xff1a; chrome&#xff1a;设置-隐私设置和安全性-网站设置-更多内容设置-PDF文档 浏览器访问&#xff1a; chrome://settings/co…

【C++游戏引擎开发】第11篇:GLFW、GLAD环境搭建与第一个三角形渲染

一、GLFW、GLAD安装 1.1 vcpkg安装相关库 跨平台C++包管理利器vcpkg完全指南 # 安装GLFW vcpkg install glfw3# 安装GLAD vcpkg install glad1.2 初始测试代码 #include <glad/glad.h> #include <GLFW/glfw3.h> int main() {glfwInit();GLFWwindow* window = g…

西门子S7-1500与S7-200SMART通讯全攻略:从基础配置到远程IO集成

以下是一篇关于西门子S7-1500与S7-200SMART通讯的详细教程&#xff0c;包含远程IO模块的配置方法&#xff0c;适用于工业自动化场景的博客发布&#xff1a; 西门子S7-1500与S7-200SMART通讯全攻略&#xff1a;从基础配置到远程IO集成 一、硬件与软件准备 硬件设备 主站&#x…

前端性能优化的全方位方案【待进一步结合项目】

以下是前端性能优化的全方位方案,结合代码配置和最佳实践,涵盖从代码编写到部署的全流程优化: 一、代码层面优化 1. HTML结构优化 <!-- 语义化标签减少嵌套 --> <header><nav>...</nav> </header> <main><article>...</arti…

前端快速入门——JavaScript变量、控制语句

1.JavaScript 定义 JavaScript 简称 JS. JavaScript 是一种轻量级、解释型、面向对象的脚本语言。它主要被设计用于在网页上实现动态效果&#xff0c;增加用户与网页的交互性。 作为一种客户端脚本语言&#xff0c;JavaScript 可以直接嵌入 HTML&#xff0c;并在浏览器中执行。…

GitHub 趋势日报 (2025年04月01日)

GitHub 趋势日报 (2025年04月01日) 本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ &#x1f4c8; 今日整体趋势 Top 10 排名项目名称项目描述今日获星语言1punkpeye/awesome-mcp-serversA collection of MCP servers.⭐ 3280未指定2th-ch/youtube-musicYouTu…