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 準備測試數據(視頻、圖片水印)如下:

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章