查看视频信息

ffmpeg -i 视频名字


视频名字这里输入前几个字符按 tab 键可以自动补全

返回结果:

红框之内的内容没什么用

编码器 :encoder : Lavf57.25.100
持续时间:Duration: 00:14:20.58, start: 0.000000, bitrate: 381 kb/s
Duration 持续时间,start 开始时间,bitrate比特率

视频流: Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yu
v420p, 1360x768, 182 kb/s, 29.94 fps, 30 tbr, 15360 tbn, 30720 tbc (default)
h264编码格式,avc1封装格式,yuv420p每一帧的格式,1360x768分辨率,182 kb/s 视频比特率,29.94 fps帧数

音频流: Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, flt
p, 191 kb/s (default)
aac 编码格式,mp4a 封装格式,44100 Hz 采样率,stereo 立体声,fltp 浮点型,191 kb/s (default)音频比特率

去除音频

ffmpeg -i 文件名 -an -vcodec copy 文件名.mp4

-an去除音频,-vcodec copy拷贝源数据的视频流到文件名.mp4文件里面

去除视频

ffmpeg -i 文件名 -vn -acodec copy 文件名.mp4

-vn去除音频,-acodec copy拷贝源数据的音频流到文件名.mp4文件里面

保存音频为AAC文件

 ffmpeg -i 文件名.mp4 -vn -acodec copy 文件名.aac

改变视频分辨率

ffmpeg -i 文件名.mp4 -vf scale=640:360 文件名.mp4

scale=后面填写的是修改后的分辨率

ffmpeg -i 文件名.mp4 -vf scale=iw*2:ih*2 文件名.mp4

把分辨率变成两倍,也可以*0.5变成二分之一

隐藏无用信息

ffmpeg -i 文件名.mp4 -hide_banner

添加水印

ffmpeg -i 文件名.mp4 -i 水印.png -filter_complex overlay out.mp4

默认左上角,overlay=W-w 是右上角,overlay=0:H-h 是左下角,overlay=W-w:H-h 是右下角
大写的 H 是视频的高度,大写的 W 是视频的宽度,小写的 h 是水印的高度,小写的 w 是水印的宽度。

去除水印

ffmpeg -i 文件名.mp4 -vf delogo=x:y:w:h:show out.mp4

x,y 确定logo的位置坐标
w,h 设置logo的宽高
show 表示是否显示矩形框,默认是 0 不显示,1 是显示

添加文字水印

ffmpeg -i 文件名.mp4 -vf drawtext=text='内容':fontcolor='颜色':fontsize=字号 out.mp4

截取视频

ffmpeg -i 文件名.mp4 -ss 秒 -to 时间 out.mp4

从多少秒开始,截取多长时间的视频

视频转换为gif

ffmpeg -i 文件名.mp4 -ss 10 -t 5 -s 640*320 -r 15 out.mp4

-ss 开始时间
-t 持续时间
-i 后面是源文件
-s 动图分辨率
-r 帧率

ffmpeg -i 文件名.mp4 -vframes 30 out.gif

-vframes 30 视频前三十帧
把视频前三十帧转换为gif

视频压缩之 -crf

ffmpeg -i 文件名.mp4 -c:v libx264 -crf 23 out.mp4

×264 默认值是 23(建议18 - 28)
×265 默认是28(建议24 - 34)
两个的可用值是 0 到 51
值越小编码质量越好,码率越高
其中 0 可以说是无损的,51质量最差
crf 差别为6就会导致文件大小加倍或者减半

视频压缩之 -preset

ffmpeg -i 文件名.mp4 -vocdec libx264 -preset xxx -crt 25 out.mp4

preset 主要影响编码的速度,并不会很大影响输出文件的大小
x264编码算法有下列参数值
ultrafast 编码速度最快压缩率低,生成文件很大
superfa
veryfast
faster
fast
medium x264默认标准
slow
slower
veryslow
placebo 编码速度最慢,压缩率高,生成文件小

xxx 就是填入下列的参数

给视频或图像加上黑边

ffmpeg -i 文件名.mp4 -vf pad=1080:720:0:56:black out.mp4

pad后面参数值依次为:宽,高,x坐标,y坐标,默认是黑边可以不写
56:(720 - 680)/2=56
1080 x 608分辨率变成 1080 x 720分辨率

转格式

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

上面的命令表式的是音频、视频都直接 copy,只是将 mp4 的封装格式转成了flv。
copy是把原来的并不条件

  • -i: 输入文件
  • -vcodec copy : 视频编码处理方式
  • -acodec copy: 音频编码处理方式

音视频合并

ffmpeg -i out.h264 -i out.aac -vcodec copy -acodec copy out.mp4

提取YUV数据

ffmpeg -i input.mp4 -an -c:v rawvideo -pixel_format yuv420p out.yuvffplay -s (wxh分辨率,stream中看) out.yuv
  • -an: a代表audio,n代表no不包括音频的
  • -c:v rawvideo 指定将视频转成原始数据
  • -pixel_format yuv420p 指定转换格式为yuv420p(4:2:0)

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
  • -vn: v代表video,n代表不要视频
  • -ar: a代表audio,r代表read,采样率44100 44.1k
  • -ac: a代表audio,c2代表双声道还有立体声,环绕立体声
  • -f: 音频抽取出来的存取格式, s16 s代表有符号的,每一位16位表示

PCM转WAV

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

查看有哪些设备

首先通过下面的命令查看一下 mac 上都有哪些设备。

ffmpeg -f avfoundation -list_devices true -i ""

录屏

yuv播放的时候需要指定宽高

ffmpeg -f avfoundation -i 1 -r 30 out.yuv
  • -f 指定使用 avfoundation 采集数据。
  • -i 指定从哪儿采集数据,它是一个文件索引号。在我的MAC上,1代表桌面(可以通过上面的命令查询设备索引号)(1其实是个索引,屏幕是1,摄像头是0)。
  • -r 指定帧率。按ffmpeg官方文档说-r与-framerate作用相同,但实际测试时发现不同。-framerate 用于限制输入,而-r用于限制输出。

注意,桌面的输入对帧率没有要求,所以不用限制桌面的帧率。其实限制了也没用。

播放

录制的时候会提示

Stream #0:0: Video: rawvideo (UYVY / 0x59565955), uyvy422, 3360x2100,
q=2-31, 3386880 kb/s, 30 fps, 30 tbn, 30 tbc

-s 3360x2100
-pix_fmt uyvy422

ffplay -s xxxxx(你录制时候的宽高) -pix_fmt (也是你录制时候的格式) ./out.yuv

录屏+声音

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
ffmpeg -y -f avfoundation -i 1:0 -framerate 60 -c:v libx264 -r 60 -pix_fmt yuv420p -preset 0 -crf 19 -c:a aac -b:a 192k "$HOME/Screen Record $(date "+%Y-%m-%d %H-%M-%S").mp4"
  • -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 -framerate 30 -f avfoundation -i 0 out.mp4
  • -framerate 限制视频的采集帧率。这个必须要根据提示要求进行设置,如果不设置就会报错。
  • -f 指定使用 avfoundation 采集数据。
  • -i 指定视频设备的索引号

视频+音频

ffmpeg -framerate 30 -f avfoundation -i 0:0 out.mp4

录音

ffmpeg -f avfoundation -i :0 out.wav

0是代表设备的索引,可以去上面查看

录制好了播放

ffplay ./out.wav

录制音频裸数据

ffmpeg  -f avfoundation -i :0 -ar 44100 -f s16le out.pcm

视频缩小一倍

ffmpeg -i out.mp4 -vf scale=iw/2:-1 scale.mp4
  • -vf scale 指定使用简单过滤器 scale,iw/2:-1 中的 iw 指定按整型取视频的宽度。 -1 表示高度随宽度一起变化。

视频裁剪

ffmpeg -i VR.mov  -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy -video_size 1280x720 vr_new.mp4

crop 格式:crop=out_w:out_h : x : y

  • out_w: 输出的宽度。可以使用 in_w 表式输入视频的宽度。
  • out_h: 输出的高度。可以使用 in_h 表式输入视频的高度。
  • x : X坐标
  • y : Y坐标

如果 x和y 设置为 0,说明从左上角开始裁剪。如果不写是从中心点裁剪。

倍速播放

ffmpeg -i out.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" speed2.0.mp4
  • -filter_complex 复杂滤镜,[0:v]表示第一个(文件索引号是0)文件的视频作为输入。setpts=0.5*PTS表示每帧视频的pts时间戳都乘0.5,也就是差少一半。[v]表示输出的别名。音频同理就不详述了。
  • map 可用于处理复杂输出,如可以将指定的多路流输出到一个输出文件,也可以指定输出到多个文件。"[v]"复杂滤镜输出的别名作为输出文件的一路流。上面 map的用法是将复杂滤镜输出的视频和音频输出到指定文件中。

对称视频

ffmpeg  -i out.mp4 -filter_complex "[0:v]pad=w=2*iw[a];[0:v]hflip[b];[a][b]overlay=x=w" duicheng.mp4
  • hflip 水平翻转

如果要修改为垂直翻转可以用vflip。

画中画

ffmpeg -i out.mp4 -i out1.mp4 -filter_complex "[1:v]scale=w=176:h=144:force_original_aspect_ratio=decrease[ckout];[0:v][ckout]overlay=x=W-w-10:y=0[out]" -map "[out]" -movflags faststart new.mp4

录制画中画

ffmpeg  -f avfoundation -i "1" -framerate 30 -f avfoundation -i "0:0"
-r 30 -c:v libx264 -preset ultrafast
-c:a libfdk_aac -profile:a aac_he_v2 -ar 44100 -ac 2
-filter_complex "[1:v]scale=w=176:h=144:force_original_aspect_ratio=decrease[a];[0:v][a]overlay=x=W-w-10:y=0[out]"
-map "[out]" -movflags faststart -map 1:a b.mp4

多路视频拼接

ffmpeg  -f avfoundation -i "1" -framerate 30 -f avfoundation   -i "0:0" -r 30 -c:v libx264 -preset ultrafast -c:a libfdk_aac -profile:a aac_he_v2 -ar 44100 -ac 2 -filter_complex "[0:v]scale=320:240[a];[a]pad=640:240[b];[b][1:v]overlay=320:0[out]" -map "[out]" -movflags faststart  -map 1:a  c.mp4

添加水印

ffmpeg -i out.mp4  -vf "movie=logo.png,scale=64:48[watermask];[in][watermask] overlay=30:10 [out]" water.mp4
  • -vf中的 movie 指定logo位置。scale 指定 logo 大小。overlay 指定 logo 摆放的位置。

删除水印

先通过 ffplay 找到要删除 LOGO 的位置

ffplay -i test.flv -vf delogo=x=806:y=20:w=70:h=80:show=1

使用 delogo 滤镜删除 LOGO

ffmpeg -i test.flv -vf delogo=x=806:y=20:w=70:h=80 output.flv

裁剪

ffmpeg -i out.mp4 -ss 00:00:00 -t 10 out1.mp4
  • -ss 指定裁剪的开始时间,精确到秒,时:分:秒
  • -t 被裁剪后的时长,单位为秒

合并

首先创建一个 inputs.txt 文件,文件内容如下:

file ‘1.flv’
file ‘2.flv’
file ‘3.flv’

然后执行下面的命令:

ffmpeg -f concat -i inputs.txt -c copy output.flv

hls切片

ffmpeg -i out.mp4 -c:v libx264 -c:a libfdk_aac -strict -2 -f hls  out.m3u8
  • -strict -2 指明音频使有AAC。
  • -f hls 转成 m3u8 格式。

视频转JPEG

ffmpeg -i test.flv -r 1 -f image2 image-%3d.jpeg
  • -r : 图片转出的帧率,每秒钟转出1张图片
  • -f : 将输入文件转成什么格式
  • %3d是动态的,3个数字组成的

视频转gif

ffmpeg -i out.mp4 -ss 00:00:00 -t 10 out.gif

图片转视频

这个会一下把所有帧全部输出

ffmpeg  -f image2 -i image-%3d.jpeg images.mp4
  • -i : 表示输入,后面是图片

播放YUV 数据

ffplay -pix_fmt nv12 -s 192x144 1.yuv

播放YUV中的 Y平面

ffplay -pix_fmt nv21 -s 640x480 -vf extractplanes='y' 1.yuv

ffmpeg命令行使用相关推荐

  1. 【FFmpeg】Windows 搭建 FFmpeg 命令行运行环境

    文章目录 前言 一.下载 FFMPEG 二.拷贝可执行文件 三.拷贝动态库文件 四.运行 ffmpeg 命令 总结 前言 Android 中需要使用到 FFMPEG , 先在 Windows 中搭建一 ...

  2. 使用ffmpeg 命令行解码并显示像素格式为.raw图像

    使用ffmpeg 命令行解码并显示像素格式为.raw图像,命令如下: ffmpeg -vcodec rawvideo -f rawvideo -pix_fmt bayer_gbrg8 -s 2448* ...

  3. FFmpeg命令行(ffmpeg、ffplay、ffprobe)

    ffmpeg命令行 A command line tool to convert multimedia files between formats. 名称 命令 解释 查看当前设备输入信息 ffmpe ...

  4. FFmpeg命令行解析

    目录标题 一.引言(Introduction) 1.1 FFmpeg简介(Overview of FFmpeg) 1.2 FFmpeg命令行的应用场景(Application Scenarios of ...

  5. Android 下使用 FFmpeg 命令行工具与问题排查

    目录 FFmpeg 命令行工具 将相关文件加入到项目中 修改 ffmpeg 源码 问题排查 上一篇文章 中,我们已经成功编译了 FFmpeg 的主要库并集成到了我们的 Android 应用中.我们暂时 ...

  6. FFmpeg命令行工具系列二---转码流程及过滤器

    一.概述 在FFmpeg命令行工具系列一中,对FFmpeg的命令行工具FFmpeg.exe进行了简单的介绍,并举出了几个简单的例子.在这一章中,将进行一次详细的介绍,主要是对转码过程和过滤器进行介绍. ...

  7. [总结]FFMPEG命令行工具之ffmpeg详解

    目录 0 前言 1 语法 Synopsis 2 描述 Description 3 详细描述 Detailed description 3.1 滤镜 Filtering 3.1.1 简单滤镜图 Simp ...

  8. FFmpeg命令行,从小白入门到收藏吃灰——基础归纳

    1.查看版本号和功能支持 到官网 http://ffmpeg.org/download.html 下载已经编译好的ffmpeg,选用的是Windows环境下.的BtbN/FFmpeg-Builds/A ...

  9. [总结]FFMPEG命令行工具之ffplay详解

    目录 0 前言 1 语法 Synopsis 2 描述 Description 3 选项 Options 3.1 流指定器 Stream specifiers 3.2 通用选项 Generic opti ...

  10. [总结]FFMPEG命令行工具之ffprobe详解

    目录 0 前言 1 语法 Synopsis 2  描述 Description 3 选项 Options 3.1 流指定器 Stream specifiers 3.2 通用选项 Generic opt ...

最新文章

  1. Hessian的使用以及理解(转)
  2. java mina多线程_mina2中的线程池
  3. PaintCode 教程1:动态绘制按钮
  4. MM模块常用T-code
  5. MPU6050开发 -- 在 C52 单片机上测试
  6. java 弹出下载_java如何实现下载弹出的对话框
  7. 文本编辑器查看 cprintf颜色_airWriter for mac(文本编辑软件)
  8. 建设“一流本科专业”?急啥,先看看哈佛数学系从三流到一流的150年
  9. 腾讯视频网页下载_腾讯视频怎么下载视频
  10. Java实现MySQL数据库备份(一)
  11. 2019年,有远见的程序员都在关注这些硬核公众号
  12. 0-1背包问题——回溯法求解
  13. Docker-端口映射实现访问容器
  14. mfc 子窗体 按钮不触发_python项目实战:pyQT5 实现窗体之间传值
  15. 计算机网络基础知识试题及答案,计算机网络基础知识试卷及答案
  16. Matlab之正态拟合直方图绘制函数histfit
  17. 大数据面试题_数据仓库篇
  18. Word如何插入图片
  19. 小技巧:办公邮箱怎么登录foxmail?outlook如何群发单显?
  20. python继承的3个特点_面向对象三大特征之继承

热门文章

  1. [PPPOE]PPPD的选项
  2. 制造业干货,只需3步,快速提高产品良率!
  3. Shiro-SpringBoot (一)
  4. 2022-2027(新版)中国生物素酰三肽-1行业发展动态与投资趋势预测报告
  5. Javascript-API-BOM、动画函数、网页轮播图、节流阀、筋斗云、固定侧边栏返回顶部案例
  6. Nuscenes数据集转换voc_xml格式用于yolov4训练
  7. 关于NC6.X企业报表取不了数的问题及其解决方法。
  8. 利用Python自动生成及发送Excel报表
  9. Python数据分析与可视化概述(内容全面 附PPT)
  10. python求音频的梅尔倒谱系数