ffmpeg 使用
常用命令
查看视频信息: ffmpeg -i input.AVI
主要参数:
-i 设定输入流
-f 设定输出格式
-ss 开始时间
-t 时长
视频参数:
-b 设定视频流量(码率),默认为200Kbit/s -r 设定帧速率,默认为25
-s 设定画面的宽与高
-aspect 设定画面的比例
-vn 不处理视频
-vcodec 设定视频编解码器,未设定时则使用与输入
音频参数:
-ar 设定采样率
-ac 设定声音的Channel数
-acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器
-an 不处理音频
格式转换:
-i 输入文件名
-c:v 设置视频编码器
-v:b 设置码率
-c:a 设置音频编码器
-f 设置文件格式(容器)
解帧:
ffmpeg -i input_video.MOV -r 5 output_dir/frame%04d.jpg
-r代表帧率 -i代表输入
合成视频:
合成命令:
1.ffmpeg -f image2 -framerate 30 -i %04d.png 13stbself.avi
2. ffmpeg -r 5 -start_number 123 -i input_dir/frame%02d.jpg -vf fps=5 output_dir/video.mp4
1)在起始数字不是00的时候,会报错如下: Could find no file with path 'xxx.jpg' and index in the range 0-4 -start_number 代表%02d的起始数字,可以解决上述问题 2)当输出视频不是标准格式的时候,-r只能保证输出的帧率,但会按照默认视频fps=25进行丢帧,即你25张图片输出的视频只有1秒而不是5秒。 -vf fps=5 解决了丢帧的问题。
3)图像基本无损合成视频
ffmpeg -f image2 -framerate 30 -i %04d.png -b:v 5626k 13stbself2.avi
实例应用
1. 给视频添加水印,并限定播放时长
ffmpeg -y -t 60 -i input.mp4 -i logo1.png -i logo2.png -filter_complex "overlay=x=if(lt(mod(t\,20)\,10)\,10\,NAN ):y=10,overlay=x=if(gt(mod(t\,20)\,10)\,W-w-10\,NAN ) :y=10" output.mp4
-t 60 : 编辑视频时长,如果填写只会处理并输出前60秒的视频,不填写会处理整个视频
x : 水印的左上角的x坐标
y : 水印的左上角的y坐标
input.mp4 : 输入的视频文件及格式(需要处理的)
output.mp4 : 输出的视频文件及格式(已经处理完成的)
-i logo.png : 水印图像
if(gt(mod(t,20),10),W-w-10,NAN ) :第二个10说logo出现的时长,即是说水印会显示10秒
补充:添加水印的方式:
A. FFmpeg3.0之前的实现方式:
ffmpeg -i input.mp4 -vf "movie=shuiyin.png [shuiyin];[in] [shuiyin] overlay=480:10" output.mp4
ffmpeg –i input.mp4 -acodec copy-vcodec copy -vf "movie=test.png[watermark];[in][watermark]overlay=10:10:1[out]" -b 300k output.mp4
[... ] : 过滤器名,可随意起名。movie=shuiyin.png [watemrk] 意思是指明水印图片的路径,并定义为过滤器,名字是 'watermrk'
-i input.mp4 : 表示要进行水印添加处理的视频
-acodec copy-vcodec copy : 表示保持音视频编码不变
-b 300k : 表示处理视频的比特率
-vf “…”: 中间便是水印处理参数。movie是指图片水印路径,搭配overlay一起使用,重要的是overlay=后面的部分,第一个参数表示水印距离视频左边的距离,第二个参数表示水印距离视频上边的距离,第三个参数为1,表示支持透明水印。使用透明的png图片进行视频编码后,成功获得带透明水印的视频,并且画质也比较好。
B. FFmpeg3.0之后的实现方式:(过滤器比较复杂的使用-filter_complex)
ffmpeg -i input.mp4 -i shuiyin.png -filter_complex "overlay=480:10" -b:v 500k output.mp4
2. 跑马灯效果
ffmpeg -i input1 -i input2 -vcodec libx264 -an -filter_complex "overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0" -s 320x240 output.mp4
-vcodec : 视频编码处理
input1 : 放在底部的视频
input2 :放在上面的视频
320x240 :输出视频的宽高
3. 实现2秒后logo从左到右移动
ffmpeg -i input.mp4 -vf "movie=logo.png[logo];[in][logo]overlay=x='if(gte(t\,2)\,((t-2)*80)-w\,NAN)'" output.mp4
if(gte(t\,2)\,((t-2)*80)-w\,NAN) : 对水印坐标x的处理
80 移动的距离,单位像素
4. 将高清格式(1920x1080像素)的视频分辨率降低到640x360
ffmpeg -i input.mp4 -vf scale=640:360 output.mp4 -hide_banner
5. 更改视频宽高比(将高清格式(1920x1080像素)的视频分辨率降低到640x480)
ffmpeg -i input.mp4 -vf scale=640:480,setdar=4:3 video_640x480.mp4 -hide_banner
setdar :需要变更的分辨率宽和高的对比变化时使用
6.视频比特率设置(比特率越高,视频越清晰)
ffmpeg -i input.avi -b 1.5M output.mp4
ffmpeg -i input.avi -b:v 1500K output.mp4
7. 音频剪辑
ffmpeg -i input.mp3 -ss 00:00:00 -t 00:00:47 -acodec copy output.mp3
-ss :设置开始时间,从哪里剪辑
-t :设置音频总时长
8. 视频合并音频
如果原视频存在音轨
A、先去除源视频的音频轨
ffmpeg -i input.mp4 -c:v copy -an output.mp4
B、再把新的音频混进去
ffmpeg -i output.mp4 -i input.mp3 -c copy new_output.mp4
9. 合成 音、视频, 将音频格式转为aac格式
ffmpeg -i output.mp4 -i yinpin.mp3 -c copy -acodec aac -ac 2 new_output.mp4
-acodec aac :设定声音编码
-ac :<数值> 设定声道数,1就是单声道,2就是立体声,转换单声道的TVrip可以用1(节省一半容量),高品质的DVDrip就可以用2
-ar :<采样率> 设定声音采样率,PSP只认24000
-ab :<比特率> 设定声音比特率,前面-ac设为立体声时要以一半比特率来设置,比如192kbps的就设成96,转换君默认比特率都较小,要听到较高品质声音的话建议设到160kbps(80)以上

浙公网安备 33010602011771号