先上图,由于最近的需求需要对语音文件进行处理,所以抽空研究了下php处理音/视频文件的处理,简单的demo处理,截取一个音频文件的前20秒,并保存新的媒体文件。
操作步骤:
①在此站点下载所需的辅助程序 https://ffmpeg.zeranoe.com/builds/ ,选择如图默认推荐版本点击下载(如果嫌网速比较慢的话,可以利用工具网盘离线下载工功能,然后从网盘上下载下来)
② 下载后放在d盘根目录,D:ffmpeg 可执行文件在 D:ffmpegin目录下,这里可以直接在命令行中直接操作了(整理了一些执行过的代码如下)
转码 D:ffmpegin>ffmpeg -i D:ffmpeg estJay_xinyu.mp3 -b:v 640k D:ffmpeg estoutput.ts 提取前20s D:ffmpegin>ffmpeg -ss 00:00:00 -t 00:00:20 -i D:ffmpeg estJay_xinyu.mp3 D:ffmpeg estJay_xinyu_demo.mp3 将视频每隔60秒分割一次 D:ffmpegin>ffmpeg -ss 00:00:00 -t 00:00:59 -i D:ffmpeg estJay_xinyu.mp3 D:ffmpeg estJay_xinyu_1.mp3 D:ffmpegin>ffmpeg -ss 00:00:59 -t 00:01:58 -i D:ffmpeg estJay_xinyu.mp3 D:ffmpeg estJay_xinyu_2.mp3 D:ffmpegin>ffmpeg -ss 00:01:58 -t 00:02:57 -i D:ffmpeg estJay_xinyu.mp3 D:ffmpeg estJay_xinyu_3.mp3 压缩mp3 文件 如果你觉得mp3 文件 有点大,想变小一点那么可以通过-ab 选项改变音频的比特率 (bitrate) 6496kb => 4217kb D:ffmpegin>ffmpeg -i D:ffmpeg estJay_xinyu.mp3 -ab 128 D:ffmpeg estJay_xinyu_yasuo.mp3 //这里将比特率设为128 播放 D:ffmpegin>ffplay D:ffmpeg estJay_xinyu.mp3
③ 如果想在web(php)代码中运行的话,拉取PHP-FFMpeg组件,方法: composer require php-ffmpeg/php-ffmpeg , 写业务代码test.php引入vendor包内容(demo代码如下)
<?php /** * User: szliugx@gmail.com * Date: 2017/8/11 * Time: 11:27 */ include_once "./vendor/autoload.php"; echo "start... "; $ffmpeg = FFMpegFFMpeg::create(array( 'ffmpeg.binaries' => 'D:ffmpeginffmpeg.exe', 'ffprobe.binaries' => 'D:ffmpeginffprobe.exe', 'timeout' => 3600, // The timeout for the underlying process 'ffmpeg.threads' => 12, // The number of threads that FFMpeg should use ), null); $audio = $ffmpeg->open('Jay_xinyu.mp3'); $audio_format = new FFMpegFormatAudioMp3(); $audio->filters()->clip(FFMpegCoordinateTimeCode::fromSeconds(0), FFMpegCoordinateTimeCode::fromSeconds(20)); //截取前20秒的音频内容 $audio->save($audio_format, "new_demo_20s.mp3"); echo "end... ";
需要注意的是配置文件中'ffmpeg.binaries' 和 'ffprobe.binaries' 需要指向下载下来的可执行文件的地址
由于是在windows环境下做预研,linux环境时再看下是否有不一样的配置,有空的话也会记录下来