FFmpeg一些常用的命令
官网:https://ffmpeg.org/
官网下载:https://ffmpeg.org/download.html
官网下载源码:https://www.ffmpeg.org/releases/
FFmpeg 实用命令 — FFmpeg 教程 文档
一、参数
1.1 FFmpeg 常用参数
参数 | 说明 | 备注 |
---|---|---|
-i filename | 指定输入文件(或直接写文件名,用| 竖线分割),在Linux下当然也能指定:0.0(屏幕录制)或摄像头。 | |
-c:a | 指定音频编码器 copy、mp3(libmp3lame)、aac、 | 全称: codec of audio ; copy是直接拷贝视频中的原始的音频,不涉及音频的编解码,复制速度会很快。 示例:-c:a aac 指定音频编码器; |
-c:v | 指定视频编码器 copy、libx265 | -c:v copy 复制 |
-crf | 指定视频质量,范围为0-51,0为无损,23为默认值,数值越小,质量越高,文件越大 | |
-f fmt | 设定输出格式(音频或者视频格式)。 | |
-y | 覆盖已有文件。 | |
-t duration | 指定时长。 | |
-fs limit_size | 设置文件大小的上限。 | |
-ss time_off | 从指定的时间(单位为秒)开始,也支持[-]hh:mm:ss[.xxx]的格式。 | |
-re | 代表按照帧率发送,尤其在作为推流工具的时候一定要加入该参数,否则ffmpeg会按照最高速率向流媒体服务器不停地发送数据。 | |
-map | 指定输出文件的流映射关系。如果没有-map选项,则ffmpeg采用默认的映射关系。 例如:“-map 1:0-map 1:1”要求将第二个输入文件的第一个流和第二个流写入输出文件。 |
1.2 FFmpeg 视频、图像参数
参数 | 说明 | 备注 |
---|---|---|
-bitexact | 使用标准比特率。 | |
-vb | 指定视频比特率(bits/s) | |
-r rate | 帧速率(fps) | |
-vframes | 设置要输出的视频帧数 | |
-b:v | 设定视频码率 | 64k |
-bufsize | 缓存区大小 | -bufsize 6000K 或 -bufsize 64k |
-s | 设定画面的宽与高 | |
-vn | 去除视频流 | |
-aspect aspect | 设置横纵比 4:3 16:9 或 1.3333 1.7777 | |
-vcodec [none|copy|libx265 ...] | 指定视频编解码器。copy表示原始编解码数据必须被拷贝; libx265表示使用libx265编码器 | v是视频video,codec是解码器,后跟解码器名称 |
-vf | 视频过滤器 | |
qp | 量化比例为0~51。qp越大,压缩越厉害,失真越严重,失去的信息越多,画面也就越模糊。 | |
-hwaccels | 查询系统支持的硬件加速器(用显卡处理视频) | |
-codecs | 查询支持的编解码器 | |
-maxrate | 每帧的最高(最大)码率 | -maxrate 5000K |
1.3 FFmpeg 音频参数
参数 | 说明 | 备注 |
---|---|---|
-acodec [none|copy|mp3|aac ...] | 设定声音编解码器,如果用copy表示原始编解码数据必须被拷贝。 | a指的是audio,codec指的是解码器,-acodec就是指定音频解码器 |
-aframes | 设置要输出的音频帧数 | |
-b:a | 指定音频比特率 | -b:a 128k 指定128kb/s码率;-b:a 192k平均比特率为192kbps |
-ar | 设定采样率 | -ar 44k 指定音频的采样频率为44kHz |
-ac | 设定声音的Channel数 | |
-an | 去除音频流 | 即 -acodec none。合起来就是不指定音频解码器 |
-af | 音频过滤器 |
1.4 FFmpeg其他参数
参数 | 说明 | 备注 |
---|---|---|
-safe 0 | 防止Operation not permitted | |
-allowed_extensions ALL | ||
-protocol_whitelist "file,http,crypto,tcp" | ||
-strict experimental | ||
-preset | 指定编码速度和质量的平衡,可选项有ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow | |
-sn | 去除字幕流 | |
-an | 去掉音频流,只保留视频 | |
-dn | 去除数据流 | |
-decoders | 查询系统支持的编码格式 | ffmpeg -decoders |
-encoders | 查询系统支持的解码格式 | ffmpeg -encoders |
ffmpeg -h encoder=mp3 | 查询编码器 mp3 格式的详细信息 | |
ffmpeg -h decoder=h264_qsv | 查询解码器 h264_qsv 格式的详细信息 |
二、常用命令
查看支持的硬件
ffmpeg -hwaccels
如果是nvidia的显卡并安装的对应驱动,也安装了cuda,则可以使用cuda跟h_264cuvid 解码器
查看可用的对应格式解码器
ffmpeg -codecs | findstr "h264"
利用硬件解码器的命令如下,以h264_cuvid为例:
ffmpeg -hwaccel cuda -vcodec h264_cuvid -i rtsp://admin:qwer1234@192.0.0.64/stream output.mp4
-hwaccel 选择硬件模式
-vcodec 选择解码器
-i RTSP地址
output.mp4 保存成.mp4视频
note:硬解码器必须与硬件环境对应如:cuda 对应 h264_cuvid
ffmpeg -rtsp_transport udp -i srcUrl -fflags nobuffer -max_delay 1 -threads 5 -profile:v high -preset superfast -tune zerolatency -an -c:v h264 -crf 25 -s 1280*720 -f rtsp -bf 0 -g 5 -rtsp_transport udp dstUrl
ffmpeg -rtsp_transport tcp -i rtsp://127.0.0.1:554/live/camera -fflags nobuffer -max_delay 1 -threads 5 -profile:v high -preset superfast -tune zerolatency -an -c:v h264 -crf 25 -s 1280*720 -f rtsp -bf 0 -g 5 -rtsp_transport tcp rtsp://127.0.0.1:554/live/camera2
ffmpeg
-rtsp_transport tcp-i srcUrl
-fflags nobuffer
-max_delay 1
-threads 5
-profile:v high
-preset superfast
-tune zerolatency
-an-c:v h264
-crf 25
-s 1280*720
-f rtsp
-bf 0
-g 5
-rtsp_transport udp dstUrl
-i 输入文件,这里指的就是视频文件。
-y 表示无需询问,直接覆盖输出文件(如果有原文件的话,如果没有使用输出文件,这个参数的作用是防止在执行过程中出现询问是否覆盖的问题)
-f 指定输出视频的格式。
-an 表示去除音频。
-codec 一个编码器/解码器名称或者一个特定值“copy”(只适用输出)。
-q:v 1 q是质量,v是视频,v的取值范围是[1, 35],取值1的时候,对应着最佳的视频质量。
-vcodec 表示视频编码器。-vcodec rawvideo 代表使用的是raw video编码器,表示输出文件格式为raw video,即无压缩的视频数据。
-pix_fmt 表示视频像素格式,使用bgr24格式,即每个像素由三个字节组成,分别表示蓝、绿、红三个颜色通道的亮度值。
-s 表示视频尺寸,这里使用字符串格式化将 width 和 height 代入到尺寸参数中。
-r 表示视频帧率,即每秒钟显示的帧数。
-c:v 表示视频编码器类型,这里我们使用的是libx264编码器。
-pix_fmt 表示视频像素格式。由于使用了libx264编码器,这里我们使用yuv420p格式,即420 Planar格式,每个像素需要包含YUV三个颜色通道的信息。
-preset 表示编码速度的快慢,这里我们使用的是ultrafast模式。ultrafast模式下编码速度最快,但是视频质量也最差;如果需要更高的视频质量,则可以使用更高级别的preset模式,但是编码速度也会相应降低。
-f 表示输出文件格式,这里我们使用的是flv格式。
-g 表示I帧间隔数,即每隔多少帧产生一个I帧。这里我们使用的是5,表示每隔5个帧产生一个I帧,可以提高视频帧率和压缩比。
-tune:告知输入视频的风格。风格包括:
animation:动画。提升去块(deblocking)强度与参考帧数量。
fastdecode:快速解码。禁用滤镜来加快解码。
film:电影。降低去块强度。
grain:颗粒。保留旧电影的颗粒感。
stillimage:静止图像。适用于相片幻灯片或类似主题的内容。
zerolatency:零延迟。适用于快速编码,或者低延迟流媒体内容。