FFmpeg常用命令实战

FFmpeg命令分类

  • 8大类
    在这里插入图片描述

FFmpeg基本信息查询命令

在这里插入图片描述

FFmpeg录制命令

  • 摄像头录制命令
ffmpeg -f dshow -i video="摄像头名字" out.mp4
  • 录制屏幕命令
mac
ffmpeg -f avfoundation -i1-r30 out.yuv
-f:指定使用avfoundation采集数据
-i:指定从哪里采集数据,他是一个文件索引号,0代表摄像头,1代表屏幕
-r:指定帧率

msys2

ffmpeg -f gdigrab -framerate 30 -video_size 1280x720 -i desktop -pix_fmt yuv420p -vcodec rawvideo output.yuv
ffmpeg -f gdigrab -framerate 30 -video_size 1280x720 -i desktop output.mp4

-f gdigrab:指定输入设备,使用 gdigrab 捕获桌面内容。
-framerate 30:设置帧率为 30 帧每秒。此参数定义了捕获桌面内容的速度。
-i desktop:指定要捕获的输入源为桌面。desktop 是 FFmpeg 中用于捕获整个桌面内容的特殊输入源标识符。
-c:v rawvideo:选择以原始视频格式进行编码。这意味着输出文件将是未压缩的视频数据。
-out.yuv:指定输出文件的名称为 out.yuv。这是您要保存捕获到的桌面内容的文件名。
  • 播放视频
msys2
# ffplay -video_size 3840x1080 -pixel_format bgra output.yuv
  • 录音命令
mac
ffmpeg -f avfoundation -i :0 out.wav
音频的指定设备要加冒号:0
  • 查找设备
ffmpeg -list_devices true -f dshow -i dummy

FFmpeg处理流程

在这里插入图片描述

分解与复用(文件的转换)

ffmpeg -i out.mp4 -vcodec copy -acodec copy out.flv
-i :输入文件
-vcodec copy:视频编码处理方式
-acodec copy:音频编码处理方式

音频文件转换
ffmpeg -i out.aac -vn -acodec libmp3lame out.mp3
  • 抽取音视频
ffmpeg -i out.mp4 -an -vcodec copy out.h264
-an :去除音频
ffmpeg -i out.mp4 -acoedc copy -vn out.aac

处理原始数据命令

  • FFmpeg提取YUV数据
ffmpeg -i input.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv

-c:v:对视频进行编码
-rawvideo:对原始视频进行编码
  • FFmpeg提取PCM数据
ffmpeg -i out.mp4 -vn -ar 44100 -ac2 -f s16le out.pcm
-ar 44100:音频的采样率为44100
-ac2:声道数为2
-f s16le:"s16le"的意思是:"s"代表有符号的整数(Signed integer);"16"表示这个整数用16位来存储;"le"表示这个整数用的是小端(Little Endian)存储模式。
  • ffmpeg播放pcm数据
ffplay -ar 44100 -ac 2 -f s16le out.pcm
也需要指定:采样率  声道数  大小

滤镜命令

在这里插入图片描述

  • 视频裁剪命令
ffmpeg -i in.mov -vf crop=in_w-200:in_h-200 -c:libx264 -c:a copy out.mp4
-vf:视频滤镜
- crop:滤镜的名字
- in_w-200:in_h-200:高度减200宽度减200
- c:libx264:用264编码
- c:a copy:不进行处理,直接复制
  • 给视频添加水印
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=W-w-10:H-h-10" output.mp4

- ffmpeg -i input.mp4:这是调用 FFmpeg 并指定视频输入文件为 "input.mp4"。
- i watermark.png:这是指定另一输入,水印图片 "watermark.png"。
- filter_complex "overlay=W-w-10:H-h-10":这是使用 FFmpeg 的复杂过滤器功能。"overlay=W-w-10:H-h-10" 是具体的过滤器设置,意思是将水印图片放置在视频的右下角。
                                          其中,"W""H" 是视频的宽度和高度,"w""h" 是水印图片的宽度和高度。"-10" 是水印距离视频右边和底部边缘的距离。"W-w-10" 计算的是水印在 x 方向(水平方向)的位置,"H-h-10" 计算的是水印在 y 方向(垂直方向)的位置。
- output.mp4:这是指定输出文件的名称,即添加了水印后的视频文件名称。

裁剪与合并命令

  • ffmpeg音视频裁剪
ffmpeg -i in.mp4 -ss 00:00:00 -t 10 out.ts
-ss:起始时间
-t:裁剪多长时间
  • ffmpeg音视频合并
ffmpeg -f concat -i inputs.txt out.flv
inputs.txt内容为'file filename'格式。
-f concat: 告诉计算机后面的视频合并起来
-i inputs.txt:把txt文件里面的所有视频名字合并起来

图片与视频互转命令

  • 视频转图片
ffmpeg -i in.flv -r 1 -f image2 image-%3d.jpeg
-r:帧率,每秒转多少张图片出来
-f:转换后的格式
-image-%3d.jpeg:以image开头,后面用3个数字组成的
  • 图片转视频
ffmpeg -i image-%3d.jpeg out.mp4

直播流命令

  • 直播推流
ffmpeg -re -i out.mp4 -c copy -f flv rtmp://server/live/streamName
- ffmpeg - 这是FFmpeg程序的调用,它是一种非常流行的用于操作和处理多媒体数据的开源软件。
- re - 这是一个选项,表示按照音频或视频数据的原始频率读取。通常在直播场景使用,可以让推流的速度接近播放速度,避免在短时间内将视频数据快速推给RTMP服务器。
- i out.mp4 - -i 是输入文件的选项,out.mp4 是后面跟的输入文件的名称,这里是一个名为 "out.mp4" 的MP4文件。
- c copy - 这是编解码相关的选项。-c copy 的意思是复制输入流的编解码方式,不对视频或音频重新编码,这可以大大减少CPU的使用。
- f flv - -f 是指定输出格式的选项,flv 表示输出为FLV格式。RTMP通常使用FLV格式的包。
- rtmp://server/live/streamName - 这是输出的目标地址,流媒体数据将会推送到此服务器地址。你需要将该地址换成你实际需要推送的RTMP服务器地址。
  • 直播拉流
ffmpeg -i rtmp://server/live/streamName -c copy dump.flv

编译

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值