ffmpeg视频处理常用命令

news/2024/7/10 18:55:52 标签: ffmpeg, 音视频
1.ffmpeg主要参数
-f fmt(输入/输出)	强制输入或输出文件格式。 格式通常是自动检测输入文件,
并从输出文件的文件扩展名中猜测出来,所以在大多数情况下这个选项是不需要的。

-i url(输入)	输入文件的网址

-y(全局参数)	覆盖输出文件而不询问

-n(全局参数)	不要覆盖输出文件,如果指定的输出文件已经存在,请立即退出。

-c [:stream_specifier] codec(输入/输出,每个流)	
选择一个编码器(当在输出文件之前使用)或解码器(当在输入文件之前使用时)用于
一个或多个流。codec 是解码器/编码器的名称或 copy(仅输出)以指示该流不被重新编码。
如:ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy OUTPU

-codec [:stream_specifier]编解码器(输入/输出,每个流)	同 -c

-t duration(输入/输出)	当用作输入选项(在-i之前)时,限制从输入文件读取的数据的
持续时间。当用作输出选项时(在输出url之前),在持续时间到达持续时间之后停止输出。

-ss位置(输入/输出)	当用作输入选项时(在-i之前),在这个输入文件中寻找位置。
 请注意,在大多数格式中,不可能精确搜索,因此ffmpeg将在位置之前寻找最近的搜索点。 
当转码和-accurate_seek被启用时(默认),搜索点和位置之间的这个额外的分段将被解码和丢弃。
 当进行流式复制或使用-noaccurate_seek时,它将被保留。当用作输出选项(在输出url之前)时,
解码但丢弃输入,直到时间戳到达位置。

-frames [:stream_specifier] framecount(output,per-stream)	
停止在帧计数帧之后写入流。

-filter [:stream_specifier] filtergraph(output,per-stream)	
创建由filtergraph指定的过滤器图,并使用它来过滤流。filtergraph是应用于
流的filtergraph的描述,并且必须具有相同类型的流的单个输入和单个输出。
在过滤器图形中,输入与标签中的标签相关联,标签中的输出与标签相关联。
有关filtergraph语法的更多信息,请参阅ffmpeg-filters手册。

-------------------------------------------------

2.ffmpeg音频参数
-vframes num(输出)	
设置要输出的视频帧的数量。对于-frames:v,这是一个过时的别名,您应该使用它。

-r [:stream_specifier] 
fps(输入/输出,每个流)设置帧率(Hz值,分数或缩写)。作为输入选项,忽略存储
在文件中的任何时间戳,根据速率生成新的时间戳。这与用于-framerate选项不同(它
在FFmpeg的旧版本中使用的是相同的)。如果有疑问,请使用-framerate而不是输入选
项-r。作为输出选项,复制或丢弃输入帧以实现恒定输出帧频fps。

-s [:stream_specifier]大小(输入/输出,每个流)	设置窗口大小。作为输入选项,
这是video_size专用选项的快捷方式,由某些分帧器识别,其帧尺寸未被存储在文件中。
作为输出选项,这会将缩放视频过滤器插入到相应过滤器图形的末尾。请直接使用比例过
滤器将其插入到开头或其他地方。格式是'wxh'(默认 - 与源相同)。

-aspect [:stream_specifier] 宽高比(输出,每个流设置方面指定的视频显示宽高比。
aspect可以是浮点数字符串,也可以是num:den形式的字符串,其中num和den是宽高比的
分子和分母。例如“4:3”,“16:9”,“1.3333”和“1.7777”是有效的参数值。如果与-vcodec
副本一起使用,则会影响存储在容器级别的宽高比,但不会影响存储在编码帧中的宽高比(如果存在)。

-vn(输出)	禁用视频录制。

-vcodec编解码器(输出)	设置视频编解码器。这是-codec:v的别名。

-vf filtergraph(输出)	创建由filtergraph指定的过滤器图,并使用它来过滤流。

-----------------------------------

3.编码/解码命令


提取yuv数据

ffmpeg -i testVedio,flv -an -c:v rawivideo -pix_fmt yuv420p out.yuv

提取yuv数据
-pix_fmt设置像素格式

-----------------------------------

提取PCM数据

ffmpeg -i break.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm

提取PCM数据
-ar 设置音频采样率
-ac 设置音频通道数目
-f 设置pcm文件数据格式

-------------------------------------

编码命令

ffmpeg -s 1920×1080 -iout.yuv -vcodec h264 out.h264
使用和64编码压缩音频数据

ffmpeg -ar 44100 -ac 2 -f sl16le -i out.pcm -acodec libfdk_acc out.acc
使用fdk_aac编码压缩PCM数据

------------------------------------

4.处理原始数据
提取YUV数据
ffmpeg -i input.mp4 -an -c:v rawvideo -pixel_format yuv420p out.yuv
ffplay -s wxh out.yuv
-c:v rawvideo 指定将视频转成原始数据
-pixel_format yuv420p 指定转换格式为yuv420p

YUV转H264
ffmpeg -f rawvideo -pix_fmt yuv420p -s 320x240 -r 30 -i out.yuv -c:v libx264 -f rawvideo out.h264

提取PCM数据
ffmpeg -i out.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm
ffplay -ar 44100 -ac 2 -f s16le -i out.pcm

PCM转WAV
ffmpeg -f s16be -ar 8000 -ac 2 -acodec pcm_s16be -i input.raw output.wav

-------------------------------------

mp4 的封装格式转成flv

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

-------------------------------------------

5.裁剪/合并命令

裁剪命令

ffmpeg -SS 00:00:00 -t 10 -i break.mp4 -vcodec copy -acodec copy 1.ts
-SS position跳转到输入文件的postion位置,可以是秒数或者hh:mm:ss形式
-t duration读取到文件的duration位置,可以是秒数或者hh:mm:ss形式

-------------------------------------------

合并命令

ffmpeg -f concat -i input.txt -vcodec copy -acodec copy new.ts
合并input.txt的视频文件列表
input.txt格式:   file 'fileName'

ffmpeg -i out.h264 -i out.aac -vcodec copy -acodec copy out.mp4
音视频合并

-------------------------------------------

6.图片/视频互转命令
ffmpeg -i break.mp4 -t5 -r 2 -S 1024x768 %3d.jpeg视频转图片

-r fps设置图片截取速率,可以为浮点数
-S WxH设置截取图片的大小
ffmpeg -i %3d.jpeg out.mp4图片转视频
ffmpeg -i %3d.jpeg -r 5 out.gif图片转gif动图
ffmpeg -i break.mp4 -t 5 -r 30 image.gif视频转gif动图

------------------------------------------


7.录制命令
ffmpeg -y f x11grab -r 30 -S 1024x768 -i :0.0 -preset ultrafast output.mp4
录制屏幕命令,并编码封装成mp4文件

-preset设置编码器预设参数
-ultrafast最快的编码方式

ffmpeg -f alsa -i pulse -ar 44100 -ac2 -f s16le out.pcm
获取音频数据命令


ffmpeg  -f avfoundation -i 1:0  -r 29.97 -c:v libx264 -crf 0 -c:a libfdk_aac -profile:a aac_he_v2 -b:a 32k  out.flv
录制视频音频命令

-i 1:0 冒号前面的 "1" 代表的屏幕索引号。冒号后面的"0"代表的声音索相号。
-c:v 与参数 -vcodec 一样,表示视频编码器。c 是 codec 的缩写,v 是video的缩写。
-crf 是 x264 的参数。 0 表式无损压缩。
-c:a 与参数 -acodec 一样,表示音频编码器。
-profile 是 fdk_aac 的参数。 aac_he_v2 表式使用 AAC_HE v2 压缩数据。
-b:a 指定音频码率。 b 是 bitrate的缩写, a是 audio的缩与。

---------------------------------------------

直播命令

ffmpeg -re -i input.mp4 -acodec copy -vcodec copy -f flv rtmp://xxx
推视频流至流媒体服务器

-re读取输入的原始帧速率

ffmpeg -i http://ivi.bupt.edu.cn/hls/cctv6hd.m3u8 -C copy output.m3u8
保存流媒体服务器上的流至本地

----------------------------------------------------

8.视频处理命令:
ffmpeg -i in.mp3 -filter_ complex atempo=0.5 out.mp3
对声音进行变速不变调处理
-filter_ complex filtergraph设置复杂滤镜
atempo设置音频速度因子(0.5 - 100,默认1)

ffmpeg -i testVideo.flv -vf crop=in_ W-200:in_ _h- 100 -vcodec libx264 -c:a copy out.flv
裁剪视频
-vf filtergraph创建和使用filtergraph指定的滤镜组
crop滤镜名称

http://www.niftyadmin.cn/n/5426414.html

相关文章

wayland(xdg_wm_base) + egl + opengles 渲染使用纹理贴图的旋转 3D 立方体实例(十三)

文章目录 前言一、使用 stb_image 库加载纹理图片1. 获取 stb_image.h 头文件2. 使用 stb_image.h 中的相关接口加载纹理图片3. 纹理图片——cordeBouee4.jpg二、渲染使用纹理贴图的旋转 3D 立方体1. egl_wayland_texture_cube.c2. Matrix.h 和 Matrix.c3. xdg-shell-client-pr…

阿里云国际DDoS高防接入配置最佳实践

业务接入DDoS高防产品后,可以将攻击流量引流到DDoS高防,有效避免业务在遭受大流量DDoS攻击时出现服务不可用的情况,确保源站服务器的稳定可靠。本文九河云的接入配置和防护策略最佳实践,在各类场景中使用DDoS高防更好地保护您的业…

sqllab第二关通关笔记

知识点整理: 数值型注入判断手法 1/1 1/0 回显不同错误注入函数 extractvalue(xml_flag,xpath) xml_flag:文件表示符xpath:文件路径;不能识别‘~’ ‘#’ 等特殊字符;遇到就报错并打印xpath内容~(十六进制表示)&#…

Vite为什么比Webpack快

本文作者为 360 奇舞团前端开发工程师 一.引言 Vite和Webpack作为两个主流的前端构建工具,在近年来备受关注。它们的出现使得前端开发变得更加高效和便捷。然而,随着前端项目规模的不断增大和复杂度的提升,构建工具的性能优化也成为了开发者关…

小程序vue页面中怎么改变另外个vue界面中的属性

在很多情况下,我们都需要在一个js或者vue中的js逻辑部分,去修改另外个vue界面中的属性 我目前掌握的这种方法在此记录: 1.在需要修改的vue界面中的属性进行注释,并引入公共存放属性的js文件 // const result reactive({goods_id…

mysql57开启biglog并查看biglog保姆级教程

目录 详细步骤 1.修改mysql配置文件 2.重启mysql 3.操作数据库 4.查看binglog 4.1mysqlbinlog示例: 4.2mysqlbinlog将biglog写入文件示例: 4.2.1biglog中创建表示例: 4.2.2插入示例 4.2.3更新示例 详细步骤 1.修改mysql配置文件 vi /etc/my.cnf [mysqld]下增加如下…

深度学习——SAM(Segment-Anything)代码详解

目录 引言代码目录segment-anything 代码详解build_sam.pypredictor.pyautomatic_mask_generator.py 引言 从去年年初至今,SAM(Segment Anything )已经问世快一年了,SAM凭借其强大而突出的泛化性能在各项任务上取得了优异的表现,广大的研究者…

Python的基础操作

介绍 Python是一种简单易学且功能强大的编程语言,广泛应用于数据科学、Web开发、人工智能等领域。本文将介绍Python的一些基础操作, 帮助初学者快速入门。 数据类型 Python支持多种数据类型,包括整数、浮点数、字符串、列表、元组、字典等…