先上图,由于最近的需求需要对语音文件进行处理,所以抽空研究了下php处理音/视频文件的处理,简单的demo处理,截取一个音频文件的前20秒,并保存新的媒体文件。

操作步骤:

①在此站点下载所需的辅助程序 https://ffmpeg.zeranoe.com/builds/ ,选择如图默认推荐版本点击下载(如果嫌网速比较慢的话,可以利用工具网盘离线下载工功能,然后从网盘上下载下来)

② 下载后放在d盘根目录,D:\ffmpeg 可执行文件在 D:\ffmpeg\bin目录下,这里可以直接在命令行中直接操作了(整理了一些执行过的代码如下)

转码
D:\ffmpeg\bin>ffmpeg -i D:\ffmpeg\test\Jay_xinyu.mp3 -b:v 640k D:\ffmpeg\test\output.ts 提取前20s
D:\ffmpeg\bin>ffmpeg -ss :: -t :: -i D:\ffmpeg\test\Jay_xinyu.mp3 D:\ffmpeg\test\Jay_xinyu_demo.mp3 将视频每隔60秒分割一次
D:\ffmpeg\bin>ffmpeg -ss :: -t :: -i D:\ffmpeg\test\Jay_xinyu.mp3 D:\ffmpeg\test\Jay_xinyu_1.mp3
D:\ffmpeg\bin>ffmpeg -ss :: -t :: -i D:\ffmpeg\test\Jay_xinyu.mp3 D:\ffmpeg\test\Jay_xinyu_2.mp3
D:\ffmpeg\bin>ffmpeg -ss :: -t :: -i D:\ffmpeg\test\Jay_xinyu.mp3 D:\ffmpeg\test\Jay_xinyu_3.mp3 压缩mp3 文件 如果你觉得mp3 文件 有点大,想变小一点那么可以通过-ab 选项改变音频的比特率 (bitrate)
6496kb => 4217kb
D:\ffmpeg\bin>ffmpeg -i D:\ffmpeg\test\Jay_xinyu.mp3 -ab D:\ffmpeg\test\Jay_xinyu_yasuo.mp3 //这里将比特率设为128 播放
D:\ffmpeg\bin>ffplay D:\ffmpeg\test\Jay_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...\n";
$ffmpeg = FFMpeg\FFMpeg::create(array(
'ffmpeg.binaries' => 'D:\ffmpeg\bin\ffmpeg.exe',
'ffprobe.binaries' => 'D:\ffmpeg\bin\ffprobe.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 FFMpeg\Format\Audio\Mp3();
$audio->filters()->clip(FFMpeg\Coordinate\TimeCode::fromSeconds(0), FFMpeg\Coordinate\TimeCode::fromSeconds(20)); //截取前20秒的音频内容
$audio->save($audio_format, "new_demo_20s.mp3");
echo "end...\n";

需要注意的是配置文件中'ffmpeg.binaries' 和 'ffprobe.binaries' 需要指向下载下来的可执行文件的地址

由于是在windows环境下做预研,linux环境时再看下是否有不一样的配置,有空的话也会记录下来

【备忘】windows环境下20行php代码搞定音频裁剪的更多相关文章

  1. 5行js代码搞定导航吸顶效果

    一.HTML布局 首先写HTML布局 <body> <div id="wrap"></div> </body> 二.CSS样式 给点 ...

  2. 200行Java代码搞定计算器程序

    发现了大学时候写的计算器小程序,还有个图形界面,能够图形化展示表达式语法树,哈哈;) 只有200行Java代码,不但能够计算加减乘除,还能够匹配小括号~ 代码点评: 从朴素的界面配色到简单易懂错误提示 ...

  3. 180行ruby代码搞定游戏2048

    最今在玩2048这款小游戏,游戏逻辑简单,很适合我这样的对于游戏新入行的人来实现逻辑.于是选择了最拿手的ruby语言来实现这款小游戏的主要逻辑.还是挺简单的,加起来4小时左右搞定. 上代码: requ ...

  4. 几行JavaScript代码搞定Iframe 自动适应

    场景:Iframe嵌入flash,希望flash能随着页面的resize而resize. 主要代码: 代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTM ...

  5. 80行Python代码搞定全国区划代码

    微信搜索:码农StayUp 主页地址:https://gozhuyinglong.github.io 源码分享:https://github.com/gozhuyinglong/blog-demos ...

  6. windows和linux环境下java调用C++代码-JNI技术

    最近部门做安卓移动开发的需要调C++的代码,困难重重,最后任务交给了我,查找相关资料,没有一个教程能把不同环境(windows,linux)下怎么调用说明白的,自己在实现的过程中踩了几个坑,在这里总结 ...

  7. 【经验之谈】Git使用之Windows环境下配置

    前言 安装 配置 关于git使用的几个问题 后记 关于代码托管,以前用过vss和svn,看博客或论坛的时候,经常有人提到github,有很多著名的开源软件都托管在github,想来肯定不错(莫笑),当 ...

  8. windows环境下nutch2.x 在eclipse中实现抓取数据存进mysql详细步骤

    nutch2.x 在eclipse中实现抓取数据存进mysql步骤 最近在研究nutch,花了几天时间,也遇到很多问题,最终结果还是成功了,在此记录,并给其他有兴趣的人提供参考,共同进步. 对nutc ...

  9. XAMPP、PHPstorm和PHPcharm和Windows环境下Python搭建+暴力破解

    XAMPP的安装和使用 一.什么是XAMPP? XAMPP是最流行的PHP开发环境. XAMPP是完全免费且易于安装的Apache发行版,其中包含Apache.MariaDB.PHP和Perl. 类似 ...

随机推荐

  1. HDU 4665 Mutiples on a circle (圆环DP)

    题意 N个数的圆环上有多少种方案可以使得选出来的一段数是K的倍数(N<=50000, K<=200, a[i]<=1000). 思路 多校第七场1004.圆上的DP--大脑太简单处理 ...

  2. jq对页面元素进行排序

    利用sort函数排序: var div = $('.media').toArray().sort(function(a,b){ return parseInt($(a).find('.info .pr ...

  3. wordcount程序出现map 100% reduce 0%问题的解决方法

    运行wordcount程序一直停在map 100% reduce 0%, input文件夹的内容: 其中: f1.txt中的内容为:hello hadoop f2.txt中的内容为:hello had ...

  4. RabbitMQ消息队列(十)RPC应用2

    基于RabbitMQ RPC实现的主机异步管理 地址原文:http://blog.51cto.com/baiying/2065436,作者大大,我把原文贴出来了啊.不要告我 root@ansible: ...

  5. http请求的GET和POST请求:查询和新增(server.php)

    <?php //设置页面内容是html编码格式是utf-8 header("Content-Type: text/plain;charset=utf-8"); //heade ...

  6. java事务(二)

    本地事务 事务类型 事务可以分为本地事务和分布式事务两种类型.这两种事务类型是根据访问并更新的数据资源的多少来进行区分的.本地事务是在单个数据源上进行数据的访问和更新,而分布式事务是跨越多个数据源来进 ...

  7. tensorflow 初学习

    tenseroflow 拟合 y = ax*x+b构建神经网络主要分为 4 个步骤:构造数据.构建网络.训练模型.评估及预测模型.此外,还介绍了一些超参数设定的经验和技巧 #coding=utf-8 ...

  8. TCP 和 UDP 的区别( 面向连接 和 面向无连接 )

    第一:TCP 和 UDP 的区别( 面向连接 和 面向无连接 ) TCP---传输控制协议,提供的是面向连接.可靠的字节流服务.当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才 ...

  9. Postfix邮件黑名单和白名单

    本文主要介绍如何用Postfix添加域名黑名单和白名单,用以处理垃圾邮件. 1.修改postfix主配置文件,增加限制语句 vim /etc/postfix/main.cf # 文末添加一行,限制往本 ...

  10. I.MX6 I2C DS1337 disable square-wave output

    linux I2C DS1337 disable square-wave output \\\\\\\\\\\-*- 目录 -*-////////// | 一.DS1337访问寄存器说明: | 二.c ...