美文网首页linux
FFmpeg常用的命令

FFmpeg常用的命令

作者: 李福来 | 来源:发表于2018-02-28 16:44 被阅读596次

1.视频的录制

同时打开摄像头跟麦克风,进行录制:点击q进行退出
0:0,前面为图像设备,后面为声音设备。

ffmpeg -f avfoundation -framerate 30 -i "0:0" -s 320x240 cam2.mp4

如果只要声音,则:

ffmpeg -f avfoundation -i ":0" sound.aac 

或者:

ffmpeg  -f avfoundation -i ":0" -acodec libmp3lame sound2.mp3

aac是音频的一种编码格式,我用的ffmpeg3.1.2会编码成aac格式,当然也可以指定编码成mp3,但要借助libmp3lame这个组件。

想录制屏幕,那只需要把-i "0"换成-i "1"了

2.从视频中抽几张图

ffmpeg -ss 00:00:5 -i   /moments.mp4 -vframes 1 -f image2 -y a.png

ss表示开始提取图片的时间点,既可以用时分秒方式,也可以是多少秒。如果使用到这个参数,那应该把它作为第一个参数,因为可以让FFmpeg提速。

i表示输入文件,就是视频文件。

vframes表示拿多少帧,也就是多少张图片。注意,这个参数要放在-i参数之后。
f 表示提取出来的图片的格式。
y 表示覆盖已有同名的图片。

ffmpeg -i xxx.mp4 -r 1 -y -f image2 -t 5 -s 240*320 pc%3d.jpg

r 表示每秒提取图片的帧数,即帧率,默认是25fps,上面设置为一秒拿一张图。
t 表现提取持续多少秒,也可以用时分秒的格式来表示。
s 表出来的图片的尺寸。
3%d表示以001、002这样的格式来命名输出的图片。

如果我发现视频某个时间点有美女的话,那我就可以用ss从这个时间点再前一点,然后用t来持续提取5秒,或者用vframes来提取几十张,那就准没漏了!也就是这样:

ffmpeg -ss 10 -t 5 -r 1 -i Movie-1.mp4 -f image2 -y pc-temp/image%3d.jpg

提取到一些图片后,我想弄成视频,怎么办?
很简单,前提是你的ffmpeg已经支持视频编码器(比如x264),参考FFmpeg的安装吧( 已经支持lamemp3、x264、librtmp、fdk-aac等)

把图片制作成视频

ffmpeg -f image2 -i img%3d.jpg test.mp4

-img%d表示以‘img001’, ’img002‘这类的命名,按顺序使用。注意f参数要在i参数之前。

3.使用FFmpeg

提取视频流:

ffmpeg -i xx.flv -vcodec copy -an output.h264 

提取音频流:

ffmpeg -i fx_flash22298734.flv -acodec copy -vn audio.aac 

提取视频流并且为mp4格式:

ffmpeg -i xx.flv -vcodec copy -an -f mp4 1.mp4 

提取音轨(音频流):

ffmpeg -i 后来_MQ.m4a -map 0:0 0.wav  
ffmpeg -i 后来_MQ.m4a -map 0:1 1.wav 

提取声道:

ffmpeg -i "TFBOYS - 是你.mp3" -map_channel 0.0.0 1.aac -map_channel 0.0.1 2.aac

提取流中的packet:

ffmpeg -v 48 -i "rtmp://xxx.com/live/7360883 live=1" out.flv

提取pcm:

ffmpeg -i "Rogue Traders - Watching You.mp3" -f s16le -ar 44100 -ac 2 -loglevel quiet -y decoded.pcm

合成音频与视频:

ffmpeg -i 1.mp4 -i 1.wav -vcodec copy  mix_test.mp4

转码:

ffmpeg -i 22298734.flv -vcodec mpeg4 -s 320*240 -an -f m4v test.mp4

保存rtmp流在本地:

ffmpeg -i "rtmp://xxx.com/live/hks live=1" -vcodec copy -acodec copy out.flv  

FFmpeg官网
或者更具体一点的比如:

FFmpeg具体命令

4.视频MP4转成GIF

将视频 MP4 转化为 GIF

ffmpeg -i small.mp4 small.gif

转化视频中的一部分为 GIF

ffmpeg -t 3 -ss 00:00:02 -i small.webm small-clip.gif

从视频中第二秒开始,截取时长为3秒的片段转化为 gif

转化高质量 GIF

默认转化是中等质量模式,若要转化出高质量的 gif,可以修改比特率

ffmpeg -i small.mp4 -b 2048k small.gif

视频属性调整

缩放视频尺寸

ffmpeg -i big.mov -vf scale=360:-1  small.mov

注意 sacle 值必须是偶数,这里的 -1 表示保持长宽比,根据宽度值自适应高度。

如果要求压缩出来的视频尺寸长宽都保持为偶数,可以使用 -2

加倍速播放视频

ffmpeg -i input.mov -filter:v "setpts=0.5*PTS" output.mov

定义帧率 16fps:

ffmpeg -i input.mov -r 16 -filter:v "setpts=0.125*PTS" -an output.mov

慢倍速播放视频

ffmpeg -i input.mov -filter:v "setpts=2.0*PTS" output.mov

静音视频(移除视频中的音频)

ffmpeg -i input.mov -an mute-output.mov

-an 就是禁止音频输出

将 GIF 转化为 MP4

ffmpeg -f gif -i animation.gif animation.mp4

也可以将 gif 转为其他视频格式

ffmpeg -f gif -i animation.gif animation.mpeg

ffmpeg -f gif -i animation.gif animation.webm

获取 GIF 的第一帧图片

使用 ImageMagick 可以方便第提取 gif 图片的第 N 帧图像。

安装 ImageMagick

brew install imagemagick

提取第一帧

convert 'animation.gif[0]' animation-first-frame.gif

通过 [0] 就可以提取出 gif 的第一帧图像。

GIF 转出来的 MP4 播放不了?

有些 GIF 转化出来的 MP4 不能被 Mac QuickTime Player.app 播放,需要添加 pixel formal 参数

ffmpeg -i input.gif -vf scale=420:-2,format=yuv420p out.mp4

使用 yunv420p 需要保证长宽为偶数,这里同时使用了 scale=420:-2

wiki 解释: QuickTime Player 对 H.264 视频只支持 YUV 色域 4:2:0 方式的二次插值算法。

参考资料

ffmpeg -i input.mp4 output.avi

相关文章

网友评论

    本文标题:FFmpeg常用的命令

    本文链接:https://www.haomeiwen.com/subject/udfbxftx.html