在Linux 服务器上利用ffmpeg操作视频,然后利用php函数exec控制服务器执行视频操作!
1、(CentOS7)安装 ffmpeg:
.1 升级yum 可选可不选
sudo yum install epel-release -y
sudo yum update -y
.2 安装Nux Dextop Yum 源
sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
.3 安装FFmpeg 和 FFmpeg开发包
sudo yum install ffmpeg ffmpeg-devel -y
.4 测试
ffmpeg
最后没报错说明安装成功
2、Linux 下测试使用 ffmpeg
2.1 准备测试数据(视频、图片水印)如下:
3、php 控制 Linux 命令
创建 php 脚本,如 demo.php:
$cmd = 'ffmpeg -i 01.mp4 -i 01.png -filter_complex overlay 03.mp4';
exec($cmd);
3.2 访问或执行该 php 脚本
刷新查看是否生成 03.mp4 文件,是否在默认位置(左上角)有水印图片
根据以上思路可以实现php对一下功能进行操作:
4、ffmpeg 常用命令附录
、视频压缩:(1000k为压缩值)
ffmpeg -threads 2 -i in.mp4 -b 1000k out.mp4
2、视频截图:(00:00:01 为第一秒的帧)
ffmpeg -i in.mp4 -r 1 -ss 00:00:01 -vframes 1 out.jpeg
3、图片合成视频:(渐入渐出效果)
ffmpeg \
-loop 1 -t 5 -i 1.png \
-loop 1 -t 5 -i 2.png \
-loop 1 -t 5 -i 3.png \
-loop 1 -t 5 -i 4.png \
-loop 1 -t 5 -i 5.png \
-i ../Imagine.mp3 \
-filter_complex \
"[1]format=yuva444p,fade=d=1:t=in:alpha=1,setpts=PTS-STARTPTS+4/TB[f0]; \
[2]format=yuva444p,fade=d=1:t=in:alpha=1,setpts=PTS-STARTPTS+8/TB[f1]; \
[3]format=yuva444p,fade=d=1:t=in:alpha=1,setpts=PTS-STARTPTS+12/TB[f2]; \
[4]format=yuva444p,fade=d=1:t=in:alpha=1,setpts=PTS-STARTPTS+16/TB[f3]; \
[0][f0]overlay[bg1];[bg1][f1]overlay[bg2];[bg2][f2]overlay[bg3]; \
[bg3][f3]overlay,format=yuv420p[v]" -map "[v]" -map 5:a -shortest -movflags +faststart out.mp4
4. 将视频 MP4 转化为 GIF
// 视频 转gif
ffmpeg -i test.mp4 test.gif
// 从视频中第10秒开始,截取时长为3秒的片段转化为 gif
ffmpeg -ss 00:00:10 -t 3 -i test.mp4 test.gif
// 默认转化是中等质量模式,若要转化出高质量的 gif,可以修改比特率
ffmpeg -i test.mp4 -b:v 2048k test.gif
ffmpeg -f gif -i test.gif test.mp4
// 也可以将 gif 转为其他视频格式
ffmpeg -f gif -i test.gif test.mpeg
ffmpeg -f gif -i test.gif test.mkv
特效
、渐入
ffmpeg -i in.mp4 -vf fade=in:0:90 out.mp4
2、黑白
ffmpeg -i in.mp4 -vf lutyuv="u=128:v=128" out.mp4
3、锐化
ffmpeg -i in.mp4 -vf unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5 out.mp4
4、反锐化
ffmpeg -i in.mp4 -vf unsharp=7:7:-2:7:7:-2 out.mp4
5、渐晕
ffmpeg -i in.mp4 -vf vignette=PI/4 out.mp4
6、闪烁渐晕
ffmpeg -i in.mp4 -vf vignette='PI/4+random(1)*PI/50':eval=frame out.mp4
7、视频颤抖
ffmpeg -i in.mp4 -vf crop="in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(n/10):(in_h-out_h)/2+((in_h-out_h)/2)*sin(n/7)" out.mp4
8、色彩变幻
ffmpeg -i in.mp4 -vf hue="H=2*PI*t:s=sin(2*PI*t)+1" out.mp4
9、模糊处理
ffmpeg -i in.mp4 -vf boxblur=5:1:cr=0:ar=0 out.mp4
0、镜像翻转
ffmpeg -i in.mp4 -vf crop=iw/2:ih:0:0,split[left][tmp];[tmp]hflip[right];[left]pad=iw*2[a];[a][right]overlay=w out.mp4
1、水平翻转
ffmpeg -i in.mp4 -vf geq=p(W-X\\,Y) out.mp4
2、垂直翻转
ffmpeg -i in.mp4 -vf vflip out.mp4
3、浮雕效果
ffmpeg -i in.mp4 -vf format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2' out.mp4
4、均匀噪声
ffmpeg -i in.mp4 -vf noise=alls=20:allf=t+u out.mp4