PHP 视频操作(ffmpeg - 添加水印/视频压缩/视频截图等)

发布时间:2021-06-05作者:小灵龙点击:150

 

在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:

<?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

 


标签: