ffmpeg 常用命令总结:(avi转MP4、MP4转ts、视频压缩、去除视频声音、合并音频和视频)

配置

window10 64位系统

说明:

整理一下自己用到过的几个常用命令,记录,方便帮助到需求和我一样的人,也方便以后备用。后续用到学到了会持续更新:

0、ffmpeg一些命令参数:

在这里插入图片描述

a) 通用选项

-L license

-h 帮助

-fromats 显示可用的格式,编解码的,协议的。。。

-f fmt 强迫采用格式fmt

-I filename 输入文件

-y 覆盖输出文件

-t duration 设置纪录时间 hh:mm:ss[.xxx]格式的记录时间也支持

-ss position 搜索到指定的时间 [-]hh:mm:ss[.xxx]的格式也支持

-title string 设置标题

-author string 设置作者

-copyright string 设置版权

-comment string 设置评论

-target type 设置目标文件类型(vcd,svcd,dvd) 所有的格式选项(比特率,编解码以及缓冲区大小)自动设置 ,只需要输入如下的就可以了:
ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg

-hq 激活高质量设置

-itsoffset offset 设置以秒为基准的时间偏移,该选项影响所有后面的输入文件。该偏移被加到输入文件的时戳,定义一个正偏移意味着相应的流被延迟了 offset秒。 [-]hh:mm:ss[.xxx]的格式也支持

b) 视频选项

-b bitrate 设置比特率,缺省200kb/s

-r fps 设置帧频 缺省25

-s size 设置帧大小 格式为WXH 缺省160X128.下面的简写也可以直接使用:
Sqcif 128X96 qcif 176X144 cif 252X288 4cif 704X576

-aspect aspect 设置横纵比 4:3 16:9 或 1.3333 1.7777

-croptop size 设置顶部切除带大小 像素单位

-cropbottom size –cropleft size –cropright size

-padtop size 设置顶部补齐的大小 像素单位

-padbottom size –padleft size –padright size –padcolor color 设置补齐条颜色(hex,6个16进制的数,红:绿:兰排列,比如 000000代表黑色)

-vn 不做视频记录

-bt tolerance 设置视频码率容忍度kbit/s

-maxrate bitrate设置最大视频码率容忍度

-minrate bitreate 设置最小视频码率容忍度

-bufsize size 设置码率控制缓冲区大小

-vcodec codec 强制使用codec编解码方式。 如果用copy表示原始编解码数据必须被拷贝。

-sameq 使用同样视频质量作为源(VBR)

-pass n 选择处理遍数(1或者2)。两遍编码非常有用。第一遍生成统计信息,第二遍生成精确的请求的码率

-passlogfile file 选择两遍的纪录文件名为file

c)高级视频选项

-g gop_size 设置图像组大小

-intra 仅适用帧内编码

-qscale q 使用固定的视频量化标度(VBR)

-qmin q 最小视频量化标度(VBR)

-qmax q 最大视频量化标度(VBR)

-qdiff q 量化标度间最大偏差 (VBR)

-qblur blur 视频量化标度柔化(VBR)

-qcomp compression 视频量化标度压缩(VBR)

-rc_init_cplx complexity 一遍编码的初始复杂度

-b_qfactor factor 在p和b帧间的qp因子

-i_qfactor factor 在p和i帧间的qp因子

-b_qoffset offset 在p和b帧间的qp偏差

-i_qoffset offset 在p和i帧间的qp偏差

-rc_eq equation 设置码率控制方程 默认tex^qComp

-rc_override override 特定间隔下的速率控制重载

-me method 设置运动估计的方法 可用方法有 zero phods log x1 epzs(缺省) full

-dct_algo algo 设置dct的算法 可用的有 0 FF_DCT_AUTO 缺省的DCT 1 FF_DCT_FASTINT 2 FF_DCT_INT 3 FF_DCT_MMX 4 FF_DCT_MLIB 5 FF_DCT_ALTIVEC

-idct_algo algo 设置idct算法。可用的有 0 FF_IDCT_AUTO 缺省的IDCT 1 FF_IDCT_INT 2 FF_IDCT_SIMPLE 3 FF_IDCT_SIMPLEMMX 4 FF_IDCT_LIBMPEG2MMX 5 FF_IDCT_PS2 6 FF_IDCT_MLIB 7 FF_IDCT_ARM 8 FF_IDCT_ALTIVEC 9 FF_IDCT_SH4 10 FF_IDCT_SIMPLEARM

-er n 设置错误残留为n 1 FF_ER_CAREFULL 缺省 2 FF_ER_COMPLIANT 3 FF_ER_AGGRESSIVE 4 FF_ER_VERY_AGGRESSIVE

-ec bit_mask 设置错误掩蔽为bit_mask,该值为如下值的位掩码 1 FF_EC_GUESS_MVS (default=enabled) 2 FF_EC_DEBLOCK (default=enabled)

-bf frames 使用frames B 帧,支持mpeg1,mpeg2,mpeg4

-mbd mode 宏块决策 0 FF_MB_DECISION_SIMPLE 使用mb_cmp 1 FF_MB_DECISION_BITS 2 FF_MB_DECISION_RD

-4mv 使用4个运动矢量 仅用于mpeg4

-part 使用数据划分 仅用于mpeg4

-bug param 绕过没有被自动监测到编码器的问题

-strict strictness 跟标准的严格性

-aic 使能高级帧内编码 h263+

-umv 使能无限运动矢量 h263+

-deinterlace 不采用交织方法

-interlace 强迫交织法编码 仅对mpeg2和mpeg4有效。当你的输入是交织的并且你想要保持交织以最小图像损失的时候采用该选项。可选的方法是不交织,但是损失更大

-psnr 计算压缩帧的psnr

-vstats 输出视频编码统计到vstats_hhmmss.log

-vhook module 插入视频处理模块 module 包括了模块名和参数,用空格分开

d)音频选项

-ab bitrate 设置音频码率

-ar freq 设置音频采样率

-ac channels 设置通道 缺省为1

-an 不使能音频纪录

-acodec codec 使用codec编解码

e)音频/视频捕获选项

-vd device 设置视频捕获设备。比如/dev/video0

-vc channel 设置视频捕获通道 DV1394专用

-tvstd standard 设置电视标准 NTSC PAL(SECAM)

-dv1394 设置DV1394捕获

-av device 设置音频设备 比如/dev/dsp

f)高级选项

-map file:stream 设置输入流映射

-debug 打印特定调试信息

-benchmark 为基准测试加入时间

-hex 倾倒每一个输入包

-bitexact 仅使用位精确算法 用于编解码测试

-ps size 设置包大小,以bits为单位

-re 以本地帧频读数据,主要用于模拟捕获设备

-loop 循环输入流。只工作于图像流,用于ffserver测试

1、avi转MP4命令:

ffmpeg -i .\Video.avi -c copy -map 0 video.mp4
或
ffmpeg -i .\Video.avi -c:v libx264 -crf 19 -preset slow -c:a aac -b:a 192k -ac 2  video.mp4

//剪切视频
ffmpeg -ss 0:1:30 -t 0:0:50 -i 1.avi -vcodec copy -acodec copy 3.mp4    
//-r 提取图像的频率,-ss 开始时间,-t 持续时间

在这里插入图片描述

在这里插入图片描述

2、MP4转ts

这个功能很好,而且不影响观看,大小还小了不少。

  ffmpeg -i .\video.mp4 output.ts

在这里插入图片描述

3、视频压缩

压缩命令:

 1)ffmpeg -i 123_ffmpeg.mp4  (压缩的文件更大更清晰,一般情况下不用)

 2)ffmpeg.exe -i 123.MP4 -b:v 700k 1231_ffmpeg.mp4(压缩的更小,相对模糊一些)

第二个压缩成更小的,压缩成2M多的视频,真厉害。
在这里插入图片描述

在这里插入图片描述

4、去除视频声音

  ffmpeg -i 1.avi -vcodec copy -an 2.avi  

5、合并音频和视频

ffmpeg -i a.wav  -i a.avi out.avi 

若音频比视频长,画面停留在最后一帧,继续播放声音。

6、给视频添加水印

ffmpeg -i result2.mp4 -vf "drawtext=fontfile=FZBaoHTJW_Xi.TTF: text='创作者:奮乧妑_仯姩':x=100:y=10:fontsize=24:fontcolor=yellow:shadowy=2" drawtext.mp4

记得下载需要的字体,或者自己电脑去复制都行。
你需要更改:

  1. FZBaoHTJW_Xi.TTF :我的字体文件(放在和视频一个目录下,可以网上去下载,或者window电脑目录下复制: C:\Windows\Fonts)
  2. result2.mp4 :我的需要添加水印视频
  3. text=‘创作者:奮乧妑_仯姩’ :'创作者:奮乧妑_仯姩’这个是我的水印内容,更改为你自己的
  4. drawtext.mp4 :添加水印之后生成的视频名字

在这里插入图片描述

7、flv 转MP4

 ffmpeg -i input.flv output.mp4

8、视频剪辑:

//截取从头开始的30s
ffmpeg -ss 00:00:00 -t 00:00:30 -i keyoutput.mp4 -vcodec copy -acodec copy split.mp4
//截取从30s开始的30s
ffmpeg -ss 00:00:30 -t 00:00:30 -i keyoutput.mp4 -vcodec copy -acodec copy split1.mp4

在这里插入图片描述

9、给视频添加字幕srt

参考博主:https://moejj.com/ffmpeg-add-subtitles-and-watermark/

   ffmpeg -i video.avi -vf subtitles=subtitle.srt out.avi

10、同时给视频添加音乐+字幕

 ffmpeg -i .\1111.mp4 -i .\2222.mp3 -vf subtitles=all_mp3_srt.srt out2.avi

11、使用ffmpeg webm 转换 mp4

参考:http://www.voidcn.com/article/p-evqojtvk-bta.html

  ffmpeg -fflags +genpts -i .\111.webm  -r 24 1.mp4

解释:

  1. -r 24 代码生成的视频时24帧,你也可以改成30或者60
  2. -i .\111.webm 111.webm 是我的当前目录下 webm格式的视频
  3. 1.mp4 会在当前目录下生成 这个mp4视频

在这里插入图片描述

在这里插入图片描述

12、合并俩个mp4视频

1、先创建个name.txt

file 'split1.mp4'

file 'split2.mp4'

在这里插入图片描述

2、命令合并:

   ffmpeg -f concat -i name.txt -c copy output.mp4

在这里插入图片描述

13、提取视频的音频为MP3

命令:

  ffmpeg -i .\result.mp4 -vn .\result.mp3

生成之前是这种一个MP4文件
ffmpeg -i .\result.mp4 -vn .\result.mp3
命令处理:
在这里插入图片描述
成功提取出mp3文件
在这里插入图片描述

14、去除视频中的声音(或者理解为中有声音的视频中提前不含声音的视频):

命令:

ffmpeg -i .\093660.mp4 -map 0:0 -vcodec copy out.mp4

其中:-map 表示使用哪个流做为输入,0:0 表示第1个文件的每1个流。 -vcodec 所示使用流的视频,-acodec 表示使用流的音频,我们这里不加这个参数, 表示不需要音频。 copy表示要把新的流复制到新文件

执行完毕之后,会生成不含声音的视频out.mp4。

发布了197 篇原创文章 · 获赞 105 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/weixin_42081389/article/details/100543007