ffmpeg常用命令

FFmpeg处理音视频流程
截屏2022-09-23 上午8.42.12.png
ffmpeg的安装
在macbook下的安装
  1. 使用Homebrew安装,打开终端(Terminal)应用程序。
  2. 如果您尚未安装Homebrew,请在终端中输入以下命令并按Enter键来安装Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  1. 安装FFmpeg。在终端中输入以下命令并按Enter键:
brew install ffmpeg
  1. 等待安装完成。Homebrew将下载并安装FFmpeg及其相关依赖项。
  2. 安装完成后,您可以通过输入以下命令来验证安装:
ffmpeg -version
在Windows上安装FFmpeg
  1. 使用Windows包管理器Chocolatey安装,打开命令提示符或PowerShell(以管理员身份运行)。
  2. 如果尚未安装Chocolatey,请在命令提示符或PowerShell中输入以下命令并按Enter键安装Chocolatey:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
  1. 安装FFmpeg。在命令提示符或PowerShell中输入以下命令并按Enter键:
choco install ffmpeg
  1. 等待安装完成。Chocolatey将下载并安装FFmpeg。
  2. 安装完成后,您可以在命令提示符或PowerShell中输入以下命令来验证安装:
ffmpeg -version
FFmpeg基本信息查询命令

-versio 显示版本
-formats 显示可用的格式
-demuxers 显示可用的demuxers
-protocols 显示可用的协议
-muxers 显示可用的muxers
-filters 显示可用的过滤器
-devices 显示可用的设备
-pix_fmts 显示可用的像素格式
-codecs 显示所有编解码器
-sample_fmts 显示可用的采样格式
-decoders 显示可用的解码器
-layouts 显示channel名称
-encoders 显示所有的编码器
-colors 显示识别的颜色名称
-bsfs 显示比特流filter

FFmpeg录制命令

ffmpeg -f avfoundation -i 1 -r 30 out.yuv
-f :指定使用avfoundation采集数据
-i :指定从哪儿采集数据,它是- -个文件索引号
-r :指定帧率

-f 指定使用 avfoundation 采集数据。
-i 指定从哪儿采集数据,它是一个文件索引号。在我的MAC上,1和2(外界显示器)都代表桌面(可以通过上面的命令查询设备索引号)。
-r 指定帧率。按ffmpeg官方文档说-r与-framerate作用相同,但实际测试时发现不同。-framerate 用于限制输入,而-r用于限制输出。

播放

ffplay -s 2560x1600 -pix_fmt uyvy422 out.yuv

录制的格式为yuv422,分辨率 2560x1600,所以要告诉ffplay 播放格式为uyuv422,通过 -pix_fmt参数

支持设备的索引号

macOS系统

ffmpeg -f avfoundation -list_devices true -i ""

windows系统

ffmpeg -list_devices true -f dshow -i dummy

ffmpeg -f avfoundation -i "<video device index>:<audio device index>" av-out.mov
⚠️视频录制案例
# macOS系统中执行
ffmpeg -f avfoundation  -i "2:0" -c:v libx264 -r 20 -preset ultrafast -crf 0 -pix_fmt yuv420p output.mp4
# Windows系统中执行
ffmpeg -f dshow -i video="Integrated Camera":audio="Microphone Array (Realtek High Definition Audio)" -c:v libx264 -r 20 -preset ultrafast -crf 0 -pix_fmt yuv420p output.mp4

-f :指定使用avfoundation采集数据
-c:v libx264rgb: 指定使用libx264rgb编码器。
-qp 0: 设置视频质量参数,0代表质量高,越大代表质量越低
-crf 10:10 来设定比较高的画质,默认是23;和 -qp 0 同理效果,crf更常用;同时使用-qp和-crf时,-qp通常会覆盖-crf的效果
-i: 表示录制的屏幕序号或者 屏幕序号:音频设备序号
-r 23: 表示音频码率,如出现画面和音频不一致,可通过此参数调整
-preset ultrafast: 速度优先ultrafast>superfast>veryfast>faster>fast>medium>slow>slower>veryslow
速度递减,画质递增
-pix_fmt yuv420p : 表示指定输出视频的像素格式

抓取鼠标
ffmpeg -f x11grab -capture_cursor 1 -i :0.0 output.mp4

-f x11grab: 表示使用X11抓取屏幕
-capture_cursor 1: 用于指定是否捕获屏幕录制时的鼠标光标;1表示启用捕获鼠标光标,0则表示禁用

FFmpeg录音命令

ffmpeg -f avfoundation -i :0 out.wav
:0 代表音频设备

开始录制音频

ffmpeg -f avfoundation -i :1 out.wav

播放

ffplay out.wav

yuv 是原始视频数据,ffplay 播放该类型视频时,需要指定分表率,分辨率从录制日志里可以看到

FFmpeg分解与复用

多媒体格式转换

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

抽取视频

ffmpeg -i f35.mov -an -vcodec copy out.h264

抽取音频

ffmpeg -i f35.mov -acodec copy -vn out.aac

FFmpeg处理原始数据命令

FFmpeg提取YUV数据

ffmpeg -i input.mp4 -an -c:v rawvideo -pix_fmts yuv420p out.yuv

带分辨率播放

ffplay -s 638x358 out.yuv

FFmpeg提取PCM数据

ffmpeg -i out.mp4 -vn -ar 44100 -ac2 -f s16le out.pcm

FFmpeg滤镜命令

ffmpeg -i in.mov -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy out.mp4
crop 格式 : crop=out_w:out_h:x:y

FFmpeg裁剪与合并命令

裁剪

ffmpeg -i in.mp4 -ss 00:00:00 -t 10 out.ts

合并

ffmpeq -f concat -i inputs.txt out.flv
inputs.txt 内容为 'file filename'格式。

FFmpeg图片/视频互转命令

视频转图片

ffmpeg -i in.flv -r 1 -f image2 image-%3d.jpeg

图片转视频

ffmpeg -i image-%3d jpeg out.mp4

FFmpeg直播推/拉流

直播推流

ffmpeg -re -i out.mp4 -c copy -f flv rtmp://server/live/streamName

直播拉流

ffmpeg -i rtmp://server/live/streamName -c copy dump.flv

实战

推流地址

rtmp://47.98.37.74:1935/live/4K.m3u

拉流地址

http://www.xypsp.com/live/4K.m3u8
http://47.98.37.74/live/4K.m3u8

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 参考资料:https://ffmpeg.org/ffmpeg-all.html#Synopsis 一、基本信息查询...
    yanerly阅读 3,085评论 0 0
  • FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。本文将简单介绍FFmpeg...
    MzDavid阅读 1,990评论 0 0
  • FFMPEG是特别强大的专门用于处理音视频的开源库。你既可以使用它的API对音视频进行处理,也可以使用它提供的工具...
    小村医阅读 3,962评论 0 3
  • FFmpeg常用命令分类: 基本信息查询 录制 分解/复用 裁剪与合并 图片/视频互转 直播 处理原始数据 滤镜 ...
    沈枫_ShenF阅读 1,164评论 0 5
  • ffmpeg查询命令 常用命令 视频裁剪滤镜(播放器大小裁剪): ffmpeg -i killer.mp4 -vf...
    无神阅读 692评论 0 1