zl程序教程

您现在的位置是:首页 >  其它

当前栏目

ffmpeg 常用命令整理 —— 筑梦之路

整理 常用命令 FFMPEG 筑梦之路
2023-09-14 09:16:00 时间

文档:

Documentation

FFmpeg

Introduction | other-doc-cn-ffmpeg

论坛 - Powered by Discuz!

罗索博客 - 专注于音视频处理及流媒体解决方案!让我们一起学习和成长...

#主要选项

1、-f fmt (input/output) 指定输入或者输出文件格式。常规可省略而使用依据扩展名的自动指定,但一些选项需要强制明确设定。

2、-i filename (input) 指定输入文件。

3、-y (global) 默认自动覆盖输出文件,而不再询问确认。

4、-n (global) 不覆盖输出文件,如果输出文件已经存在则立即退出。

5、-t duration(input/output) 限制输入/输出的时间。如果是在 -i 前面,就是限定从输入中读取多少时间的数据;如果是用于限定输出文件,则表示写入多少时间数据后就停止。duration可以是以秒为单位的数值或者 hh:mm:ss[.xxx] 格式的时间值。 注意 -to 和 -t 是互斥的,-t 有更高优先级。

6、-to position (output) 只写入position时间后就停止,position可以是以秒为单位的数值或者 hh:mm:ss[.xxx]格式的时间值。 注意 -to 和 -t 是互斥的,-t 有更高优先级。

7、-ss position (input/output)
当在 -i 前,表示定位输入文件到position指定的位置。注意可能一些格式是不支持精确定位的,所以ffmpeg可能是定位到最接近position(在之前)的可定位点。position可以是以秒为单位的数值或者 hh:mm:ss[.xxx] 格式的时间值。

8、-itsoffset offset (input) 设置输入文件的时间偏移。offset 必须采用时间持续的方式指定,即可以有-号的时间值(以秒为单位的数值或者 hh:mm:ss[.xxx] 格式的时间值)。偏移会附加到输入文件的时间码上,意味着所指定的流会以时间码+偏移量作为最终输出时间码。

9、-timestamp date (output) 设置在容器中记录时间戳。

10、-codec[:stream_specifier] codec (input/output,per-stream) 为特定的文件选择编/解码模式,对于输出文件就是编码器,对于输入或者某个流就是解码器。选项参数中 codec 是编解码器的名字,或者是 copy(仅对输出文件)则意味着流数据直接复制而不再编码。


#视频选项

1、-vframes number (output) 设置输出文件的帧数,是 -frames:v 的别名。

2、-r[:stream_specifier] fps (input/output,per-stream) 设置帧率(一种Hz值,缩写或者分数值)。

3、-s[:stream_specifier] size (input/output,per-stream) 设置帧的尺寸。

4、-vn (output) 禁止输出视频。

5、-vcodec codec (output) 设置视频编码器,这是 -codec:v 的一个别名。

6、aspect[:stream_specifier] aspect (output,per-stream) 指定视频的纵横比(长宽显示比例)。aspect 是一个浮点数字符串或者num:den格式字符串(其值就是num/den),例如"4:3","16:9","1.3333"以及"1.7777"都是常用参数值。


#音频选项

1、-aframes number (output) 设置 number 音频帧输出,是 -frames:a 的别名。

2、-ar[:stream_specifier] freq (input/output,per-stream) 设置音频采样率。默认是输出同于输入。对于输入进行设置,仅仅通道是真实的设备或者raw数据分离出并映射的通道才有效。对于输出则可以强制设置音频量化的采用率。

3、-aq q (output) 设置音频品质(编码指定为VBR),它是 -q:a 的别名。

4、-ac[:stream_specifier] channels (input/output,per-stream) 设置音频通道数。默认输出会有输入相同的音频通道。对于输入进行设置,仅仅通道是真实的设备或者raw数据分离出并映射的通道才有效。

5、-an (output) 禁止输出音频。

6、-acode codec (input/output) 设置音频解码/编码的编/解码器,是 -codec:a 的别名。


#字幕选项

1、-scodec codec(input/output) 设置字幕解码器,是 -codec:s 的别名。

2、-sn (output) 禁止输出字幕。

3、-fix_sub_duration 修正字幕持续时间。

4、-canvas_size size 设置字幕渲染区域的尺寸(位置)。

#格式转化

ffmpeg -i input_test.mp4 -vn -acodec copy output_test.flv
ffmpeg -i input_test.aac -vn -acodec copy output_test.mp3


#抽取视频中的音频

ffmpeg -i input_test.mp4 -vn -y -acodec copy output_test.aac
ffmpeg -i input_test.mp4 -vn -y -acodec copy output_test.mp3
ffmpeg -i input_test.mp4 -acodec copy -vn output_test.mp3

#剥离视频

ffmpeg -i input_test.mp4 -vcodec copy -an output_test.avi
ffmpeg -i input_test.mp4 -vcodec copy -an output_test.mp4


#合成音视频

ffmpeg -i input_test_1.mp4 -i input_test_2.mp3 -vcodec copy -acodec copy output_test.mp4

ffmpeg -i input_test_1.mp4 -itsoffset 10 -i input_test_2.mp3 -vcodec copy -acodec copy output_test.mp4

ffmpeg -ss 20 -t 5 -i input_test_1.mp4 -i input_test_2.aac -vcodec copy -acodec copy output_test.mp4
音乐持续播放,视频只播放5秒

ffmpeg -ss 20 -t 5 -i input_test_1.mp3 -i input_test_2.mp4 -vcodec copy -acodec copy output_test.mp4
视频持续播放,音乐只播放5秒


#合成音频

ffmpeg -i input_test_1.mp3 -i input_test_2.mp3 -filter_complex amix=inputs=2:duration=shortest output_test.mp3

ffmpeg -i input_test_1.mp3 -i input_test_2.mp3 -filter_complex amix=inputs=2:duration=longest output_test.mp3

ffmpeg –i input_test_1.mp3 –i input_test_2.mp3 –vcodec copy –acodec copy output_test.mp3

格式:ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT


#视频拆分成图片

ffmpeg -i input_test.mp4 -r 1 -f image2 output_image-%03d.jpeg

#图片合成视频

ffmpeg -f image2 -i output_image-%03d.jpeg output_test.mp4

#降低音频声音大小

ffmpeg -i input_test.mp3 -af 'volume=0.5' output_test.mp3

#音效淡入淡出

ffmpeg -i input_test.mp3 -filter_complex afade=t=in:ss=0:d=4 output_test.mp3
淡入效果:把 input_test.mp3 文件的前5s做一个淡入淡出效果,输出到 output_test.mp3
文件中

ffmpeg -i input_test.mp3 -filter_complex afade=t=out:st=20:d=6 output_test.mp3
淡出效果:将 input_test.mp3 文件从20s开始,做6s的淡出效果,输出到 output_test.mp3 文件中


#截取音频片段

ffmpeg -ss 10 -i input_test.mp3 -to 20 -vcodec copy -acodec copy output_test.mp3

ffmpeg -ss 10 -i input_test.mp3 -t 5 -vcodec copy -acodec copy output_test.mp3

ffmpeg -i input_test.mp3 -c copy -t 10 -output_ts_offset 120 output_test.mp3


#获取视频时长

ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 -i input_test.mp3



#音频录制

ffmpeg -i https://xxx.xxx.xxxxxx -c copy -f mp3 output_test.mp3

#播放音频

ffplay input_test.mp3


#视频录制
ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi

#视频截取输出GIF

ffmpeg -i input_image_%03d.png -r 5 output_test.gif

#抽取pcm数据

ffmpeg -i input_test.mp4 -vn -ar 44100 -ac 2 -f s16le output_test.pcm


#为视频添加logo

##左上角
ffmpeg -i input.mp4 -i iQIYI_logo.png -filter_complex overlay output.mp4 

##右上角
ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=W-w output.mp4

##左下角
ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=0:H-h output.mp4 

##右下角
ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=W-w:H-h output.mp4


# 去掉视频logo

语法:-vf delogo=x:y:w:h[:t[:show]] 
x:y 离左上角的坐标 
w:h logo的宽和高 
t: 矩形边缘的厚度默认值4 
show:若设置为1有一个绿色的矩形,默认值0

ffmpeg -i input.mp4 -vf delogo=0:0:220:90:100:1 output.mp4 
#调整视频时长倍速

#加速2倍

ffmpeg -i Test.mp4 -an -r 50 -filter:v "setpts=0.5*PTS" more2.mp4

#减速2倍

ffmpeg -i Test.mp4 -an -r 50 -filter:v "setpts=2*PTS" less2.mp4

参数说明:

1、调整速度倍率范围[0.25, 4]。

2、只调整视频,则把音频禁掉,节省开销。

3、对视频进行加速时,不想丢帧,可以用-r 参数指定输出视频FPS