PHP 视频操作(ffmpeg - 添加水印/视频压缩/视频截图等)
未知
2021-06-05 14:09:42
0

 

在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

 


相关内容

MySQL变量定义与初始化
MySQL变量分为系统变量和用户定义变量,用于存储数据和配置参数。...
2024-11-20 19:00:42
如何使用MySQL变量进行...
本文详细介绍了MySQL中用户定义变量、系统变量和局部变量的使用方...
2024-11-20 18:46:45
MySQL变量在数据库操作...
MySQL变量在数据库操作中至关重要,用于存储数据、配置操作、实现...
2024-11-20 17:46:42
PHP与SQLSRV数据库...
摘要:本文介绍了PHP与SQLSRV数据库迁移的步骤和注意事项,包...
2024-11-20 11:46:42
PHP与SQLSRV连接数...
PHP与SQLSRV连接SQL Server数据库教程,介绍安装配...
2024-11-20 11:23:44
PHP与SQLSRV连接M...
本文介绍了使用PHP和SQLSRV扩展连接MySQL数据库的实例,...
2024-11-20 11:00:46

热门资讯

tp5 jquery判断手机端... application--common.php中添加如下代码 //函数作用是判断用户打开的是手机端还...
Laravel 5.5 .No... 创建了新的laravel项目后, 运行提示:No application encryption ke...
php 打印date函数出现错... 问题描述: 我使用的是phpstudy,在练习时间函数的时候,打印出现在的时间,date(Y-m-d...
生成随机字符唯一标识符guid... /** * @param $length * @return string * 生成随机字符串 */...
layui缩略图 div class=layui-form-item label class=layui-form-l...
php函数substr_rep... php函数substr_replace从某个位置替换或删除或插入字符串
Laravel 引入自定义类库... 强烈建议引入的类 都是含有命名空间的,这样使用起来就不会出现重名的情况。!!当然,没有命名空间也可以...
object json转化为数... //调用api 程序,通知商户订单异常 20200314 public function callt...
Laravel 查看SQL操作... 方法一:临时打印操作记录 DB::connection()-enableQueryLog(); # ...
php银行开放平台接口:pfx... 问题描述: 对接易通银行,他们的服务开放平台是java开发,而我的是php,现在需要php版本的SD...