一、为什么选择ffmpeg处理gif?
1,ffmpeg可以从视频中截取gif
2,ffmpeg在缩放gif时出错的机率较低,
二、ffmpeg一些命令参数
-i 指定要转换视频的源文件
-s视频转换后视频的分辨率
-vcodec 视频转换时使用的编解码器(-codecs)
-r视频转换换的板率(默认25桢每秒)
-b视频转换换的bit率
-ab 音频转换后的bit率(默认64k)
-acodec 制定音频使用的编码器(-codecs)
-ac制定转换后音频的声道-ar 音频转换后的采样率
-an 禁用音频-vn 禁用视频
-acodec copy 复制音频,不转码-vcodec copy 复制视频,不转码
-y 覆盖输出文件,即如果outputwmv文件已经存在的话,不经提示就覆盖掉
-i"1.avi 输入文件是和fmpeg在同一目录下的1.av文件,可以自己加路径,改名字
-title"Test”在PSP中显示的影片的标题
-vcodec xvid 使用XVID编码压缩视频,不能改的
-s 368×208 输出的分辨率为368×208,注意片源一定要是16:9的不然会变形
-r 29.97 帧数,一般就用这个吧
-b 1500 视频数据流量,用-bxxx的指令则使用固定码率,数字随便改,1500以上没效果;还可以用动态码率如:-qscale 4和-qscale6,4的质量比6高
-acodec aac 音频编码用AAC
-ac2 声道数1或2
-ar 24000声音的采样频率,好像PSP只能支持24000Hz
-ab 128音频数据流量,一般选择32、64、96、128
-vol 200200%的音量,自己改
-muxvb 768 好像是给PSP机器识别的码率,一般选择384、512和768,我改成1500,PSP就说文件损坏了
-fpsp输出psp专用格式
"output.wmv” 输出文件名,也可以加路径改文件名
三、用ffmpeg的常见用法
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、视频压缩
压缩命令:
ffmpeg -i 123_ffmpeg.mp4 (压缩的文件更大更清晰,一般情况下不用)
ffmpeg -i 123.MP4 -b:v 700k 1231_ffmpeg.mp4(压缩的更小,相对模糊一些)
3、去除视频声音
ffmpeg -i 1.avi -vcodec copy -an 2.avi
4、视频剪辑
//截取从头开始的30s
ffmpeg -ss 00:00:00 -t 00:00:30 -i keyoutput.mp4 -vcodec copy -acodec copy split.mp4
//截取从30s到的35s
ffmpeg -i k.mp3 -ss 00:00:30 -to 00:00:35 2.mp3
截取5秒长度生成gif
#-ss 00:00:02: 从第二秒开始
#-t 5: 持续5秒
#-f gif: 指定文件格式为gif(因为输出文件名的后缀是gif,所以这个参数可以不添加)
2,生成指定宽高的gif
#-v quiet: 不显示版本和处理过程等log信息
#-s 320x180: 指定生成的gif图的宽高
#-y : 文件存在时自动覆盖,不再询问
3,生成gif时指定fps
查看原视频的fps:
原视频的fps并不高,值为30
# -r: 指定fps
4,gif转mp4
四、web开发中的转换
web开发中涉及到视频播放的前端一般会使用h5的video标签对后端提供的视频文件url直接加载进行播放,虽然视频文件后缀都是mp4,但并非所有视频文件的编码格式都支持用video播放,目前支持的格式有以下几种:
MP4=MPEG4文件使用H264视频编解码器和AAC音频编解码器
WebM=Web文件使用VP8视频编解码器和Vorbis音频编解码器
ogg=Ogg文件使用Theora视频编解码器和Vorbis音频编解码
ffmpeg -i input.mp4 -lavfi "[0:v]scale=256/81*iw:256/81*ih,boxblur=luma_radius=min(h\,w)/40:luma_power=3:chroma_radius=min(cw\,ch)/40:chroma_power=1[bg];[bg][0:v]overlay=(W-w)/2:(H-h)/2,setsar=1,crop=w=iw*81/256" output.mp4 ffmpeg -i input.mp4 -lavfi '[0:v]scale=ih*16/9:-1,boxblur=luma_radius=min(h\,w)/20:luma_power=1:chroma_radius=min(cw\,ch)/20:chroma_power=1[bg];[bg][0:v]overlay=(W-w)/2:(H-h)/2,crop=h=iw*9/16' -vb 800K output.mp4
fmpeg -loop 1 -i background.png -i input.mkv -filter_complex "[1]scale=w=480:h=280[s];[0][s]overlay=w/2:h/2" -shortest -y output.mp4
说明
scale拉伸图片尺寸
-shortest视频播放结束停止转换
-y覆盖已存在
五、查看ffmpeg的版本
六、ffmpeg下载
版权声明:本文为原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
关注微信公众号:"cq_xifan";