ffmpeg常用命令笔记

将mp4视频转换为指定宽高的视频

big_buck_bunny.mp4为原视频,big_buck_bunny_1.mp4为新视频,用 -s 指定宽高
ffmpeg -y -i ./big_buck_bunny.mp4 -s 2560*1440 big_buck_bunny_1.mp4

视频剪切

从第200秒开始,向后剪切10秒
ffmpeg -i test.mp4 -ss 200 -t 10 -codec copy cut.mp4

将rtsp流下载保存为mp4

ffmpeg -i rtsp://admin:spassword@192.168.11.21/Streaming/Channels/101 -vcodec copy out.mp4

合并视频流

创建一个文本文件 filelist.txt:

file 'input1.mkv'
file 'input2.mkv'
file 'input3.mkv'

执行命令:

ffmpeg -f concat -i filelist.txt -c copy output.mkv

将mov格式视频转换为mp4格式

ffmpeg -i shipin1.mov -vcodec libx264 -preset fast -crf 20 -y -vf "scale=1920:-1" -acodec libmp3lame -ab 128k shipin1.mp4

去除mp4视频中的音频

ffmpeg -i 37_1.mp4 -y -an -codec copy 371.mp4

ffmpeg -i 37_1.mp4 -y -an -codec copy -q:v 1 371.mp4

-i 输入文件,这里指的就是视频文件。

-y 表示无需询问,直接覆盖输出文件(如果有原文件的话)。

-vn 分离音频,不处理视频。

-an 分离视频,不处理音频。

-codec 一个编码器/解码器名称或者一个特定值“copy”(只适用输出)。

-q:v 1 q是质量,v是视频,v的取值范围是[1, 35],取值1的时候,对应着最佳的视频质量

推送rtsp流

ffmpeg -re -i ./ch00.mp4 -c copy -f rtsp rtsp://127.0.0.1:8554/testing_bot

实例

①:视频格式转换

ffmpeg -i test.h264 -vcodec copy -f mpegts test.ts              # 将h264格式转为ts格式

ffmpeg -i test.h264 -vcodec copy -f mp4 test.mp4              # 将h264格式转为MP4格式

②:视频拼接

ffmpeg -i "concat:test1.h264|test2.h264" -vcodec copy -f h264 out12.h264
# 将test1.h264和test2.h264视频拼接起来,输出out12.h264视频

③:视频截图

ffmpeg -i test.mp4  -t 0.001 -s 352x240 1.jpg    # 在test.mp4中截图:输出文件时间长度0.001秒,宽高352x240

ffmpeg -i test.mp4 -vframes 30 -y -f gif 1.gif       # 将test.mp4前30帧做成gif动图,覆盖输出文件

ffmpeg -i test.mp4 -t 10 -r 1 pic-%03d.jpg           # 从视频前10s中取图像,1s提取一帧(即帧率为1)

④:单独提取音频、视频:

ffmpeg -i test.mp4 -acodec aac -vn output.aac   # 单独提取音频

ffmpeg -i test.mp4 -vcodec copy -an output.mp4  # 单独提取视频

⑤:视频剪辑

ffmpeg -ss 00:00:15 -t 00:00:05 -i test.mp4 -vcodec copy -acodec copy output.mp4 
# 从test.mp4视频的15秒位置开始,持续5秒的视频输出为output.mp4

ffmpeg参数

能力集列表

ffmpeg -formats

-formats:列出支持的文件格式。

-codecs:列出支持的编解码器。

-decoders:列出支持的解码器。

-encoders:列出支持的编码器。

-protocols:列出支持的协议。

-bsfs:列出支持的比特流过滤器。

-filters:列出支持的滤镜。

-pix_fmts:列出支持的图像采样格式。

-sample_fmts:列出支持的声音采样格式。

常用输入选项

-i filename:指定输入文件名。

-f fmt:强制设定文件格式,需使用能力集列表中的名称(缺省是根据扩展名选择的)。

-ss hh:mm:ss[.xxx]:设定输入文件的起始时间点,启动后将跳转到此时间点然后开始读取数据。

对于输入,以下选项通常是自动识别的,但也可以强制设定。

-c codec:指定解码器,需使用能力集列表中的名称。

-acodec codec:指定声音的解码器,需使用能力集列表中的名称。

-vcodec codec:指定视频的解码器,需使用能力集列表中的名称。

-b:v bitrate:设定视频流的比特率,整数,单位bps。

-r fps:设定视频流的帧率,整数,单位fps。

-s W*H : 设定视频的画面大小。也可以通过挂载画面缩放滤镜实现。

-pix_fmt format:设定视频流的图像格式(如RGB还是YUV)。

-ar sample rate:设定音频流的采样率,整数,单位Hz。

-ab bitrate:设定音频流的比特率,整数,单位bps。

-ac channels:设置音频流的声道数目。

常用输出选项

-f fmt:强制设定文件格式,需使用能力集列表中的名称(缺省是根据扩展名选择的)。

-c codec:指定编码器,需使用能力集列表中的名称(编码器设定为”copy“表示不进行编解码)。

-acodec codec:指定声音的编码器,需使用能力集列表中的名称(编码器设定为”copy“表示不进行编解码)。

-vcodec codec:指定视频的编码器,需使用能力集列表中的名称(编解码器设定为”copy“表示不进行编解码)。

-r fps:设定视频编码器的帧率,整数,单位fps。

-pix_fmt format:设置视频编码器使用的图像格式(如RGB还是YUV)。

-ar sample rate:设定音频编码器的采样率,整数,单位Hz。

-b bitrate:设定音视频编码器输出的比特率,整数,单位bps。

-ab bitrate:设定音频编码器输出的比特率,整数,单位bps。

-ac channels:设置音频编码器的声道数目。

-an 忽略任何音频流,即删除音频流。

-vn 忽略任何视频流,即删除视频流。

-t hh:mm:ss[.xxx]:设定输出文件的时间长度。

-to hh:mm:ss[.xxx]:如果没有设定输出文件的时间长度的话可以设定终止时间点。

流标识

FFMPEG的某些选项可以对一个特定的媒体流起作用,这种情况下需要在选项后面增加一个流标识。流标识允许以下几种格式:

流序号,如“:1”表示第二个流。

流类型,如:a表示音频流,流类型可以和流序号合并使用,如:a:1表示第二个音频流。

节目,节目和流序号可以合并使用。

流标识,流标识是一个内部标识号。

假如要设定第二个音频流为copy,则需要指定-codec:a:1 copy

音频选项

-aframes:等价于frames:a,输出选项,用于指定输出的音频帧数目。

-aq:等价于q:a,老版本为qscale:a,用于设定音频质量。

-atag:等价于tag:a,用于设定音频流的标签。

-af:等价于filter:a,用于设定一个声音的后处理过滤链,其参数为一个描述声音后处理链的字符串。

视频选项

-vframes:等价于frames:v,输出选项,用于指定输出的视频帧数目。

-aspect:设置宽高比,如4:3、16:9、1.3333、1.7777等。

-bits_per_raw_sample:设置每个像素点的比特数。

-vstats:产生video统计信息。

-vf:等价于filter:v,用于设定一个图像的后处理过滤链,其参数为一个描述图像后处理链的字符串。

-vtag:等价于tag:v,用于设定视频流的标签。

-force_fps:强制设定视频帧率。

-force_key_frames:显式控制关键帧的插入,参数为字符串,可以是一个时间戳,也可以是一个“expr:”前缀的表达式。如“-force_key_frames 0:05:00”、“-force_key_frames expr:gte(t,n_forced*5)”

高级选项

-re:按照既定速率处理输入数据,这个速率即是输入文件的帧率,如果没有该参数ffmpeg会一股脑地按最高的效率发送数据。

-map:指定输出文件的流映射关系。例如 “-map 1:0 -map 1:1”要求将第二个输入文件的第一个流和第二个流写入到输出文件。如果没有-map选项,ffmpeg采用缺省的映射关系。

-y :覆盖输出文件,即如果存在和输出文件同名的文件,覆盖它。

-n:不覆盖输出文件。

posted @ 2022-08-30 18:28  随风飘-挨刀刀  阅读(442)  评论(0编辑  收藏  举报
Top