最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • PHP-FFMpeg 操作视频/音频文件

    正文概述 转载于:掘金(小聚)   2021-01-15   323

    参考文档  blog.jam00.com/article/inf…

    fmpeg功能强大,但我们首先得学会对其进安装(windows下安装)。

    下载网址:ffmpeg.org/download.ht…,对应的Windows版本

    进入解压后文件的bin目录下,可以看到相应的.exe文件。将bin目录添加到环境变量path中,注意以分号结尾。
    验证是否安装成功:
    运行cmd命令,在控制台输入命令:ffmpeg -version,结果如下所示:

    PHP-FFMpeg 操作视频/音频文件

    安装成功! 

    项目在使用之前请安装好 FFMpeg

    使用composer快速安装 > composer require php-ffmpeg/php-ffmpeg。

    使用时请配置 ffmpeg,ffprobe 的执行文件绝对路径。我定义了一些测试用的视频音频文件

    $path = [
        'ffmpeg.binaries' => 'D:\ffmpeg\bin\ffmpeg.exe',
        'ffprobe.binaries' => 'D:\ffmpeg\bin\ffprobe.exe',
    ];
    
    $v1 = './static/common/mv.mp4';
    $a1 = './static/common/a1.mp3';
    $ffmpeg = FFMpeg::create($path);
    
    //视频提取第几秒图片
    $video = $ffmpeg->open($v1);
    $frame = $video->frame(Coordinate\TimeCode::fromSeconds(2));//提取第几秒的图像
    $frame->save('./uploads/uid2/image/image.jpg');
    
    
    //视频转音频
    $video = $ffmpeg->open($v1);
    $audio_format = new Audio\Mp3();
    $video->save($audio_format, './uploads/uid2/audio/audio.mp3');
    
    //给视频加水印图片  (视频的编码 aac, libvo_aacenc, libfaac, libmp3lame)
    libfdk_aac$video = $ffmpeg->open($v1);$watermarkPath = './static/common/water.jpg';
    $absolute = ['x' => 50,'y' => 100];
    $relative = [    
        'position' => 'relative', 
       'bottom' => 50,
        'right' => 50];
    $video->filters()->watermark($watermarkPath, $relative);
    $video->save(new Video\X264('aac'), './uploads/uid2/video/1080_new.mp4');  
    //注意:x264 类默认使用 libfaac 为编码器,但我安装的是 aac,所以这里要指定为 aac,不然会报错 
    //可选项 relative(相对定位) / absolute(绝对,默认)
    //若为 relative,有四个参数可选,top 、bottom、left、right ,分别对应四个方位
    //若为 absolute,直接填写 x 和 y 坐标即可 
    
    
    
    
    //视频添加水印$video = $ffmpeg->open($v1);
    $format = new Video\X264('aac');
    $format->setKiloBitrate(1000)->setAudioChannels(2)->setAudioKiloBitrate(256);
    $format->on('progress', function ($video, $format, $percentage) 
    {
        echo "$percentage % 进度";
    });
    $video->save($format, './uploads/uid2/video/1080_new.avi');
    
    //获取视频时长
    $ffprobe = FFProbe::create($path);
    $videoInfo = $ffprobe->format($v1);//也可以使用 get 获取特定值,第二个参数为默认值(若该参数不存在将返回此默认值)
    $duration = $ffprobe->format($v1)->get('duration',100);
    echo "<pre>";print_r($videoInfo);
    echo "</pre>";
    echo '视频时长:'.$duration;
    
    
    //音频转换格式
    $audio = $ffmpeg->open($a1);
    $format = new Audio\Flac();
    $format->on('progress', function ($audio, $format, $percentage) {
        echo "$percentage % 进度";
    });
    $format->setAudioChannels(2)->setAudioKiloBitrate(256);
    $audio->save($format, './uploads/uid2/audio/1080_new.flac');
    // 生成音频波形
    $audio = $ffmpeg->open($a1);
    $waveform = $audio->waveform(640, 120, array('#00FF00'));
    $waveform->save('./uploads/uid2/audio/image.png');//必须保存为 png 格式
    

    起源地下载网 » PHP-FFMpeg 操作视频/音频文件

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元