liweishan / ffmpeg-helper
This is a ffmpeg helper for PHP.
1.1.1
2024-06-12 03:55 UTC
Requires
- php: >=7.4
- ext-json: *
README
ffmpeg-helper
安装
composer require liweishan/ffmpeg-helper
使用示例
//配置命令路径(可选) FFmpegHelper::setConfig([ 'ffmpegPath' => '/opt/homebrew/bin/ffmpeg', 'ffprobePath' => '/opt/homebrew/bin/ffprobe' ]); //截取视频封面(指定帧或时间) $from = '/Users/lws/Desktop/111.mp4'; $to = '/Users/lws/Desktop/111.png'; $res = FFmpegHelper::getVideoCoverImage($from, $to, 1, null); var_dump($res);die; //获取视频帧率 $path = '/Users/lws/Desktop/111.mp4'; $res = FFmpegHelper::getVideoFrameRate($path): var_dump($res);die; //获取视频时长、大小 $path = '/Users/lws/Desktop/111.mp4'; $res = FFmpegHelper::getMediaInfo($path): var_dump($res);die; //视频裁切 $from = '/Users/lws/Desktop/111.mp4'; $to = '/Users/lws/Desktop/222.mp4'; $res = FFmpegHelper::cutVideo($from, $to, '0.0.0.0', '0.0.0.15'): var_dump($res);die; //音频格式转换 $from = '/Users/lws/Desktop/111.wav'; $to = '/Users/lws/Desktop/111.mp3'; $res = FFmpegHelper::convertMusic($from, $to); var_dump($res);die; //视频格式转换 $from = '/Users/lws/Desktop/111.mp4'; $to = '/Users/lws/Desktop/111.avi'; $res = FFmpegHelper::convertVideo($from, $to); var_dump($res);die; //合并音频 $paths = [ '/Users/lws/Desktop/111.mp3', '/Users/lws/Desktop/222.mp3', ]; $to = '/Users/lws/Desktop/333.mp3'; $res = FFmpegHelper::concatMusics($paths,$to); var_dump($res);die; //合并视频 $paths = [ '/Users/lws/Desktop/111.mp4', '/Users/lws/Desktop/222.mp4', ]; $to = '/Users/lws/Desktop/333.mp4'; $res = FFmpegHelper::concatVideos($paths,$to); var_dump($res);die; //校验视频流 生成音轨(如果返回新的文件路径 用完记得删除) $from = '/Users/lws/Desktop/111.mp4'; $res = FFmpegHelper::checkVideoStreams($from); var_dump($res); //视频添加图片 $from = '/Users/lws/Desktop/111.mp4'; $to = '/Users/lws/Desktop/222.mp4'; $img = '/Users/lws/Desktop/111.gif'; $res = FFmpegHelper::videoAddImage($from, $to, $img, 0, '220', '400'); var_dump($res); //视频添加音频 $from = '/Users/lws/Desktop/111.mp4'; $to = '/Users/lws/Desktop/222.mp4'; $music = '/Users/lws/Desktop/111.mp3'; $res = FFmpegHelper::videoAddMusic($from, $to, $music); var_dump($res); //视频叠加视频 $from = '/Users/lws/Desktop/111.mp4'; $video = '/Users/lws/Desktop/222.mp4'; $to = '/Users/lws/Desktop/333.mp4'; $res = FFmpegHelper::videoAddVideo($from, $to, $video, '200', '200', 'right'); var_dump($res);die; //视频合并添加叠加转场特效 $path1 = '/Users/lws/Desktop/111.mp4'; $path2 = '/Users/lws/Desktop/222.mp4'; $to = '/Users/lws/Desktop/333.mp4'; $res = FFmpegHelper::videoAddXfade($path1, $path2, $to, 'fadeblack'); var_dump($res);die; //设置视频速率 $from = '/Users/lws/Desktop/111.mp4'; $to = '/Users/lws/Desktop/222.mp4'; $res = FFmpegHelper::setVideRate($from, $to, 0.5); var_dump($res);die;
执行自定义命令
//方式一:命令(参数用%s占位) + 可变参数 $ffmpegPath = '/opt/homebrew/bin/ffmpeg'; $from = '/Users/lws/Desktop/111.mp4'; $to = '/Users/lws/Desktop/111.png'; $timeStamp = '00:00:00.000'; $res = FFmpegHelper::exec('%s -y -i %s -ss %s -vframes 1 %s', $ffmpegPath, $from, $timeStamp, $to); var_dump($res); //方式二:纯命令 $res = FFmpegHelper::exec('/opt/homebrew/bin/ffmpeg -y -i /Users/lws/Desktop/111.mp4 -ss 00:00:00.000 -vframes 1 /Users/lws/Desktop/333.png'); var_dump($res); //返回数组格式 ['code' => 0, 'data' => []]