(三)、ffmpeg 常用命令

目录

一、准备:

二、简单尝试

三、常用语法

1、帮助查询

2、过滤链

3、map用法

4、覆盖

5、叠加水印

6、设置帧率

7、设置码率

8、控制输出文件大小

9、设置分辨率

10、裁剪

11、填充

12、翻转

13、旋转

14、模糊

15、锐化

16、添加Logo

17、添加文本

18、图片支持

19、添加字幕subtitles

20、视频颤抖、色彩平衡

21、设置音频视频播放速度

22、马赛克视频

23、指定时间段处理:

24、视频合并:

方法一:FFmpeg concat 协议

方法二:FFmpeg concat 分离器

方法三:Mencoder 连接文件并重建索引

方法四:使用 FFmpeg concat 过滤器重新编码(有损)

音视频轨道合并:

25、视频截取

26、其他


一、准备:

官方文档:https://ffmpeg.org/ffmpeg.html

注:ffplay与ffmpeg语法类似,只是一个是实时播放,一个是生成输出文件。

 

源视频:https://cloud-clip-out.oss-cn-hangzhou.aliyuncs.com/video/9fbda264-99ad-49c3-8a07-654e685f6c31/13e000a4-0950-482b-b396-a1ad20d994a5.mp4?=1553594411

二、简单尝试

查看视频信息:

ffmpeg -i test.mp4
ffmpeg version 4.1.2-tessus  https://evermeet.cx/ffmpeg/  Copyright (c) 2000-2019 the FFmpeg developersbuilt with Apple LLVM version 10.0.0 (clang-1000.11.45.5)configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplaylibavutil      56. 22.100 / 56. 22.100libavcodec     58. 35.100 / 58. 35.100libavformat    58. 20.100 / 58. 20.100libavdevice    58.  5.100 / 58.  5.100libavfilter     7. 40.101 /  7. 40.101libswscale      5.  3.100 /  5.  3.100libswresample   3.  3.100 /  3.  3.100libpostproc    55.  3.100 / 55.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test2.mp4':Metadata:major_brand     : isomminor_version   : 512compatible_brands: isomiso2avc1mp41encoder         : Lavf57.83.100Duration: 00:00:14.68, start: 0.000000, bitrate: 1175 kb/sStream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1041 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)Metadata:handler_name    : VideoHandlerStream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)Metadata:handler_name    : SoundHandler
At least one output file must be specified

 

视频文件截图

  • 截取一张352x240尺寸大小的,格式为jpg的图片
ffmpeg -y -i test.mp4 -bitexact -vcodec h264 -b:v 128k -r 15 -s 176x144 -acodec aac -ac 1 -ar 48000 -aq 2 -b:a 128k -vol 512 -f 3gp test.3gp转换文件为3GP格式
-vol 512 音量大小  256 为普通
-aq 音频质量
-ar 频率
-b:v 视频码率
-r fps 设置帧频 缺省25
-b:a 音频码率

 

三、常用语法

 

1、帮助查询

以音频和视频长度长的为准。
ffmpeg -i test2.mp4 -i out2.wav  -map 0:v:0 -map 1:a:0 all.mp4 -yffmpeg -i test2.mp4   -map 0:a -c:a copy test.mov
ffmpeg -i test.mp4 -i test.mov -map 1:a:0 -map 0:v:0  all2.mp4 -yffmpeg -i test.mp4 -i test.mov -map 1:a:0 -map 0:v:0  all2.mp4 -y

25、视频截取

官网地址:http://trac.ffmpeg.org/wiki/Seeking

•截取00:00:03到00:00:06。
ffmpeg  -i test.mp4 -vcodec copy -acodec copy -ss 00:00:03 -to 00:00:06 cut.mp4 -y•参数解释:
-ss time_off   set the start time offset 设置从视频的哪个时间点开始截取,上文从视频的第10s开始截取
-to 截到视频的哪个时间点结束。上文到视频的第15s结束。截出的视频共5s.
如果用-t 表示截取多长的时间如 上文-to 换位-t则是截取从视频的第10s开始,截取15s时长的视频。即截出来的视频共15s.
-vcodec copy表示使用跟原视频一样的视频编解码器。
-acodec copy表示使用跟原视频一样的音频编解码器。-i 表示源视频文件
-y 表示如果输出文件已存在则覆盖。-t 持续时间(输入/输出)
当用作输入选项时(在-i之前),限制从输入文件读取数据的持续时间。
当用作输出选项时(在输出url之前),在持续时间达到持续时间后停止输出。
持续时间必须是持续时间规范,请参阅ffmpeg-utils(1)手册中的(ffmpeg-utils)持续时间部分。
-to和-t是互斥的,-t优先。
•值得注意的是,ffmpeg 为了加速,会使用关键帧技术, 所以有时剪切出来的结果在起止时间上未必准确。 通常来说,把 -ss 选项放在 -i 之前,会使用关键帧技术; 把 -ss 选项放在 -i 之后,则不使用关键帧技术。 如果要使用关键帧技术又要保留时间戳,可以加上 -copyts 选项:
ffmpeg -ss 00:00:03 -i test.mp4 -to 00:00:06 -c copy -copyts cut.mp4
截取参数优化:
将-ss, -t 参数放在-i参数之前
ffmpeg -ss 10 -t 15 -i test.mp4 -codec copy cut.mp4对输入文件执行seek操作,会seek到-ss设置的时间点前面的关键帧上,时间不精确,但是不会出现黑屏。使用accurate_seek 剪切时间更加精确
ffmpeg -ss 10 -t 15 -accurate_seek -i test.mp4 -codec copy cut.mp4
PS:accurate_seek必须放在-i参数之前如果编码格式采用的copy 最好加上 -avoid_negative_ts 1 参数
ffmpeg -ss 10 -t 15 -accurate_seek -i test.mp4 -codec copy -avoid_negative_ts 1 cut.mp4

26、其他

不显示编译信息

ffmpeg -i test2.3gp -hide_banner 展示视频信息,但不展示执行文件编译信息

拆分视频、音频

ffmpeg -i test.mp4 -i test2.mp4 out1.mkv out2.wav -map 1:a -c:a copy out3.mov

多个取 最高分辨率的视频流 最高轨道的音频 最先发现的字幕。

 

音频拆分码率转换

ffmpeg -i test.mp4 -b:a 64k a.mp2 -b:a 128k b.mp2 -map 0:1 -map 0:1

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部