ffmpeg-ffmpeg命令详解

linux下安装ffmpeg:

参考: https://www.jianshu.com/p/905df3d9e753

ffmpeg常用参数说明:

主要参数:

-i 输入文件

-ss 开始时间

-t 持续时间

 

视频参数:

-b 视频码率

-pix_fmt raw data的格式

-r 视频帧率

-s 视频尺寸(1920x1080)

-aspect 设定画面的比例

-vn 不处理视频

-vcodec 视频编解码器

 

音频参数:

-ar 设定采样率

-ac 设定声音的Channel数

-acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器

-an 不处理音频

 

ffmpeg常用命令:

264 to yuv:

ffmpeg -i input_file.264 -s 1280x720 -pix_fmt yuv420p -vframes 100 output.yuv

-vframes 指定解码帧数

 

yuv to 264:

ffmpeg -i input_file.yuv -s 1280x720 -vcodec h264 output_file.264

 

yuv to 264 并且控制I帧间隔和B帧:

ffmpeg -i input_file -vcodec h264 -bf 1 -g 25 -s 854x480 -an -f m4v output_file

-bf 控制B帧数目,-g 控制I帧间隔, -f 控制文件格式

 

音频格式改变:

ffmpeg -i input_file -vcodec h264 -b:v 10M -b:a 128K output_file

-b:v 10M 表示视频码率为10Mbps

-b:a 128K 表示音频码率为 128Kbps

 

从视频中提取图像保存为图片:

ffmpeg -i input.mp4 -r 1 -f image2 image-%3d.jpeg

-r 表示提取图像的频率

-f 表示输出格式

%3d 表示文件命名方式(也即生成的图片名为 image-001.jpeg, image-002.jpeg, …, image-999.jpeg)。

 

裁剪视频(音频相同):

ffmpeg -ss 00:00:31.300 -t 00:00:20 -i VID_20191113_205651.mp4 -vcodec copy -acodec copy output.mp4

-ss 开始时间

-t 持续时间

-i 输入视频

 

合并视频:

ffmpeg -i 1.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 1.ts

ffmpeg -i 2.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 2.ts

ffmpeg -i "concat:1.ts|2.ts" -acodec copy -vcodec copy -absf aac_adtstoasc contact.mp4

把1.mp4和2.mp4合成为一个contact.mp4,首先把两个mp4均转换为ts,然后再把两个ts拼接成一个mp4

 

把图片合成为视频

ffmpeg -loop 1 -f image2 -i /tmpdir/image%04d.jpg -vcodec libx264 -r 24 -t 1 test.mp4

-loop 是否循环写入

/tmpdir/image%04d.jpg 输入图片文件,图片文件保存为 image0001.jpg image0002.jpg …

-vcodec 选择编码方式

-r 视频帧率

-t 视频时长(s)

 

音视频分离之抽取音频:

ffmpeg -i 3.mp4 -vn -y -acodec copy 3.aac

ffmpeg -i 3.mp4 -vn -y -acodec copy 3.m4a

 

音视频分离之抽取视频:

ffmpeg -i input.mp4 -vcodec copy -an video.mp4

 

音视频合并:

ffmpeg -i video.avi -i audio.mp3 -vcodec copy -acodec copy output.avi

 

指定尺寸、编码格式、数据格式重新编码:

ffmpeg -i cut-insert.mp4 -vf scale=1920:1080 -pix_fmt yuv420p -vcodec libx264 cut-3.mp4

 

将视频指定部分静音:

ffmpeg -i video.mp4 -af "volume=enable='between(t,5,10)':volume=0, volume=enable='between(t,15,20)':volume=0" out.mp4

上面就是把视频5-10s和15-20s静音

 

生成静音音频流:

ffmpeg -f lavfi -t 10 -i anullsrc test.aac -y

 

查看ffmpeg支持的所有yuv格式:

ffmpeg -pix_fmts

 

yuv缩放命令:

ffmpeg -s 1920x1080 -r 25 -i input.yuv -vf scale=960:540 -c:v rawvideo -pix_fmt yuv420p out.yuv

 

yuv裁剪功能:

ffmpeg -s 1920x1080 -i input.yuv -c:v rawvideo -filter:v select="gt(n\, -1)" -vframes 30 out30.yuv

or

ffmpeg -s 1920x1080 -i input.yuv -c:v rawvideo -filter:v select="between(n\, 10\, 50)" out30.yuv

// 根据帧数裁剪,裁剪第10帧到第50帧

ffmpeg -s 1920x1080 -i input.yuv -c:v rawvideo -filter:v select="between(t\, 10\, 50)" out30.yuv

// 根据时间戳裁剪,裁剪第10s到第50s

or

ffmpeg -r 1 -ss 8 -i input.yuv -vcodec copy -vframes 30 output.yuv

// 从第8帧开始一共裁剪30帧

 

视频裁剪功能:

ffmpeg -i VID_20191211_140343.mp4 -vf crop=100:100:0:0 output.mp4

crop=height:width:x:y

其中height:width表示要裁剪的视频尺寸,x:y表示裁剪的视频左上角的位置。

 

视频播放速率调整(视频快进、慢放等):

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

注意:视频调整的速度倍率范围为:[0.25, 4]

对视频进行加速时,如果不想丢帧,可以用-r 参数指定输出视频FPS,方法如下:

ffmpeg -i input.mp4 -an -r 60 -filter:v "setpts=2.0*PTS" output.mp4

上面的方法是只调整video的速度,若还需调整audio速度,方法如下:

ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv

注意:倍率调整范围为[0.5, 2.0]

如果需要调整4倍可采用以下方法:

ffmpeg -i input.mkv -filter:a "atempo=2.0,atempo=2.0" -vn output.mkv

如果需要同时调整,可以采用如下的方式来实现:

ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv

 

视频旋转功能:

ffmpeg -i input.mp4 -vf "transpose=1" output.mp4

其中transpose为旋转角度

0:逆时针旋转90度并垂直翻转,这是默认值。

1:顺时针旋转90度。

2:逆时针旋转90度。

3:顺时针旋转90度并垂直翻转。

要将视频顺时针旋转180度,你需要如下两次提及转置参数:

ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4

上面的命令将重新编码给定视频文件的音频和视频部分,如果你不想重新编码视频并仅更改元数据中的旋转度,请改用以下命令:

ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=90 output.mp4

更好的是,你可以将输入文件的所有全局元数据(例如日期、相机详细信息)复制到输出文件,如下所示:

ffmpeg -i input.mp4 -map_metadata 0 -metadata:s:v rotate="90" -codec copy output.mp4

 

给视频加黑边:

ffmpeg -i video-crop.mp4 -vf 'scale=2340:900,pad=2340:1080:0:0:black' video-final.mp4

其中scale=2340:900表示将原视频缩放到2340*900

pad=2340:1080:0:0:black 表示最终视频的尺寸是2340*1080,然后把video-crop.mp4放在[0,0]坐标的位置,其他地方用黑色填充。

 

视频和图片转换成黑白颜色:

//把图片转换为黑白的

ffmpeg -i sample.png -vf hue=s=0 output.png

//把视频转换为黑白的
ffmpeg -i julin_5s.mp4 -vf hue=s=0 -c:a copy julin_monochrome.mp4

 

官网翻译文档:https://www.bookstack.cn/read/other-doc-cn-ffmpeg/ffmpeg-doc-cn-40.md

官方ffmpeg命令行参考文档:http://ffmpeg.org/ffmpeg.html

 

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值