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

思路

在Linux 服务器上利用ffmpeg操作视频,然后利用php函数shell_exec控制服务器执行视频操作!

1、(CentOS7)安装 ffmpeg:

1.1 升级yum

sudo yum install epel-release -y
sudo yum update -y

1.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

1.3 安装FFmpeg 和 FFmpeg开发包

sudo yum install ffmpeg ffmpeg-devel -y

1.4 测试

ffmpeg

最后没报错说明安装成功,安装教程来源:https://blog.csdn.net/qq_41494464/article/details/88654227

2、Linux 下测试使用 ffmpeg

2.1 准备测试数据(视频、图片水印)如下:

扫描二维码关注公众号,回复: 9832554 查看本文章

2.2 在该目录下执行命令:

# 该命令执行的效果:在 01.mp4 文件上添加 01.png 水印 并将新生成的视频文件保存为 02.mp4
ffmpeg -i 01.mp4 -i 01.png -filter_complex overlay 02.mp4

刷新查看是否生成 02.mp4 文件,是否在默认位置(左上角)有水印图片

3、php 控制 Linux 命令

创建 php 脚本,如 test.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 常用命令附录

1、视频压缩:(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

特效

1、渐入

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

10、镜像翻转

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

11、水平翻转

ffmpeg -i in.mp4 -vf geq=p(W-X\\,Y) out.mp4

12、垂直翻转

ffmpeg -i in.mp4 -vf vflip out.mp4

13、浮雕效果

ffmpeg -i in.mp4 -vf format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2' out.mp4

14、均匀噪声

ffmpeg -i in.mp4 -vf noise=alls=20:allf=t+u out.mp4
发布了46 篇原创文章 · 获赞 42 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/Phplayers/article/details/101153448
今日推荐