之前專案中用到上傳視頻時,需要獲取視頻大小,視頻第一幀及給視頻添加水印問題,找了很多資料,結合在專案中的實際運用,在此記錄一下,
1.FFMpeg安裝
-
下載擴展
網上可以找到,我這里放到百度云盤 鏈接:百度云盤下載 提取碼:t5zz
-
composer 安裝php-ffmpeg
github上安裝 php-ffmpeg
注意:以上不是二選一,是兩者都需要哦
# composer 安裝
composer require php-ffmpeg/php-ffmpeg
2.獲取上傳檔案大小和時長
# ffmpeg和ffprobe為上面下載的擴展在你專案中的路徑
$file = '你上傳的視頻路徑';
$ffprobe = \FFMpeg\FFProbe::create([
'ffmpeg.binaries' => '/usr/bin/ffmpeg', # 你自己安裝的位置
'ffprobe.binaries' => '/usr/bin/ffprobe' # 你自己安裝的位置
]);
# 獲取視頻時長
$video_time = $ffprobe->format($file)->get('duration',0)/60;
# 獲取視頻大小(單位可能不準確)
$video_size = $ffprobe->format($file)->get('size',0)/1000000;
3.視頻提取第幾幀做縮略圖
$ffmpeg = \FFMpeg\FFMpeg::create([
'ffmpeg.binaries' => '/usr/bin/ffmpeg', # 你自己安裝的位置
'ffprobe.binaries' => '/usr/bin/ffprobe' # 你自己安裝的位置
]);
$video = $ffmpeg->open($url_video);
$frame = $video->frame(\FFMpeg\Coordinate\TimeCode::fromSeconds(1)); # 提取第1秒的影像
$url_image = "static/".md5(uniqid().rand(1,999)).'.png'; # 生成圖片路徑
$frame->save($url_image); # 保存圖片
dump($url_image);die; # 獲取視頻截取的圖片
4.視頻添加水印
$ffmpeg = \FFMpeg\FFMpeg::create([
'ffmpeg.binaries' => '/usr/bin/ffmpeg', # 你自己安裝的位置
'ffprobe.binaries' => '/usr/bin/ffprobe' # 你自己安裝的位置
]);
# $video_url 為視頻路徑
$video = $ffmpeg->open($video_url);
$watermarkPath = 'static/images/sy.gif'; # 水印圖片
$sy_url_video = "static/".md5(uniqid().rand(1,999)).'.mp4'; # 新生成的待水印視頻名稱
$video->filters()->watermark($watermarkPath, array(
'position' => 'relative',# 視頻定位
'top' => -20,
'left' => -5,
));
$video->save(new \FFMpeg\Format\Video\X264('libfdk_aac'), $sy_url_video); # 保存視頻
dump($sy_url_video);die; # 得出帶水印的視頻
到此,完整的php操作ffmpeg就完成了,今天先這里,后期有機會,補全其他功能,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/78176.html
標籤:其他
