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