PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件


Posted in PHP onSeptember 24, 2014

配置php.ini文件

file_uploads = on ;//是否允许通过HTTP上传文件的开关。默认为ON即是开

upload_tmp_dir ;//文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹

upload_max_filesize = 1024m ;//望文生意,即允许上传文件大小的最大值。默认为2M,我们设置为1G

post_max_size = 1024m ;//指通过表单POST给PHP的所能接收的最大值,我们也设置为1G
max_execution_time = 3600 ;//每个PHP页面运行的最大时间值(秒),默认30秒,设置为一小时,因为后面转码时间很久。

max_input_time = 36000 ;//每个PHP页面接收数据所需的最大时间,默认60秒

memory_limit = 8m ;//每个PHP页面所吃掉的最大内存,默认8M

 文件上传插件

火焰雨推荐大家使用uploadify,Uploadify是JQuery的一个上传插件,实现带进度显示。插件安装简单,此处略过。
 但是有个问题需要注意,非IE浏览器session会丢失,查了很多资料,最终总结的原因是:

因为诸如uploadify采用的是flash客户端,它产生的useragent与浏览器的user-agent不同。
 

最终解决办法:

//在upmodify上传参数中加入session参数,如下:

scriptData: {"SESSION_ID":""},

// 在服务端接收页面加入以下代码:

if(@$_REQUEST['SESSION_ID'] && ($session_id=$_REQUEST['SESSION_ID']) !=session_id()){

session_destroy();

session_id($session_id);

@session_start(); 

}

 这样就解决了 FLASH 不能正确传递页面

视频格式转换

现在Linux下比较流行的视频格式转换软件是FFMPEG,FFMPEG是用于录制、截图、转换和流化音频和视频的完整解决方案,一套领先的音/视频编解码类库。除了FFMPEG外,我们要转码成H264格式 ,还需要一个扩展。(文章最后给出所有软件包下载地址)

centos 5.4环境下安装源码安装h264扩展

tar -xjvf x264-snapshot-20120718-2245-stable.tar.bz2 

  #进入解压后的源文件目录 

  cd x264-snapshot-20120718-2245-stable/ 

  ./configure --prefix=/usr/local --enable-shared 

  make

  make install
 //centos 5.4环境下安装源码安装ffmpeg with h264扩展

 tar -xjvf ffmpeg-2.1.1.tar.bz2

 //进入解压后目录 

 cd ffmpeg-2.1.1

 ./configure --enable-gpl --enable-libx264

 make

 make install

 //重新加载配置

 lcfonfig 

 //测试是否安装成功

 ffmpeg

 如果你看到以下内容说明安装成功:

ffmpeg version 2.1.1 Copyright (c) 2000-2013 the FFmpeg developers

 built on Dec 17 2013 23:32:40 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-3)

 configuration: --enable-libx264 --enable-gpl

 libavutil 52. 48.101 / 52. 48.101

 libavcodec 55. 39.101 / 55. 39.101

 libavformat 55. 19.104 / 55. 19.104

 libavdevice 55. 5.100 / 55. 5.100

 libavfilter 3. 90.100 / 3. 90.100

 libswscale 2. 5.101 / 2. 5.101

 libswresample 0. 17.104 / 0. 17.104

 libpostproc 52. 3.100 / 52. 3.100

 Hyper fast Audio and Video encoder

 usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

 Use -h to get full help or, even better, run 'man ffmpeg'

 php调用ffmpeg转码视频

$cmd = 'FFMPEG  -i  uploadfile/video/test.wmv -c:v libx264 -strict -2 uploadfile/mp4/test.mp4';

 exec($cmd, $status);

 运行前请确认exec函数已经开启。否则请修改php.ini文件

最后附上FFMPEG+H264扩展+YASM+apache_mod_h264

PHP 相关文章推荐
使用PHP制作新闻系统的思路
Oct 09 PHP
php学习 字符串课件
Jun 15 PHP
国外比较好的几个的Php开源建站平台小结
Apr 22 PHP
linux下为php添加curl扩展的方法
Jul 29 PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
Jan 14 PHP
codeigniter教程之多文件上传使用示例
Feb 11 PHP
thinkphp实现like模糊查询实例
Oct 29 PHP
在PHP站点的页面上添加Facebook评论插件的实例教程
Jan 08 PHP
php处理带有中文URL的方法
Jul 11 PHP
php通过PHPExcel导入Excel表格到MySQL数据库的简单实例
Oct 29 PHP
PHP实现一个限制实例化次数的类示例
Sep 16 PHP
PHP实现递归的三种方法
Jul 04 PHP
php实现获取及设置用户访问页面语言类
Sep 24 #PHP
php实现的zip文件内容比较类
Sep 24 #PHP
php导出CSV抽象类实例
Sep 24 #PHP
php实现的双向队列类实例
Sep 24 #PHP
php实现的Timer页面运行时间监测类
Sep 24 #PHP
php密码生成类实例
Sep 24 #PHP
PHP中file_get_contents高?用法实例
Sep 24 #PHP
You might like
ThinkPHP实现批量删除数据的代码实例
2014/07/02 PHP
PHP操作Redis常用技巧总结
2018/04/24 PHP
PHP工厂模式简单实现方法示例
2018/05/23 PHP
JS获取IUSR_机器名和IWAM_机器名帐号的密码
2006/12/06 Javascript
js实现iframe动态调整高度的代码
2008/01/06 Javascript
让ie运行js时提示允许阻止内容运行的解决方法
2010/10/24 Javascript
js的表单操作 简单计算器
2011/12/29 Javascript
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
JS回调函数的应用简单实例
2014/09/17 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
深入浅析NodeJs并发异步的回调处理
2015/12/21 NodeJs
Bootstrap 布局组件(全)
2016/07/18 Javascript
AngularJS 指令详细介绍
2016/07/27 Javascript
js数组操作方法总结(必看篇)
2016/11/22 Javascript
js实现二级导航功能
2017/03/03 Javascript
史上最全JavaScript常用的简写技巧(推荐)
2017/08/17 Javascript
利用jquery如何从json中读取数据追加到html中
2017/12/01 jQuery
jQuery实现checkbox全选功能完整实例
2018/07/12 jQuery
利用JS实现一个同Excel表现的智能填充算法
2018/08/13 Javascript
解决layui-open关闭自身窗口的问题
2019/09/10 Javascript
React+Redux实现简单的待办事项列表ToDoList
2019/09/29 Javascript
分享JS表单验证源码(带错误提示及密码等级)
2020/01/05 Javascript
django限制匿名用户访问及重定向的方法实例
2018/02/07 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
2019/08/23 Python
如何使用Python破解ZIP或RAR压缩文件密码
2020/01/09 Python
Python面向对象特殊属性及方法解析
2020/09/16 Python
如何将Pycharm中调整字体大小的方式设置为"ctrl+鼠标滚轮上下滑"
2020/11/17 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
2021/02/07 Python
HTML5的结构和语义(2):结构
2008/10/17 HTML / CSS
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
Farfetch香港官网:汇集全球时尚奢侈品购物平台
2017/11/26 全球购物
留学自荐信的技巧
2013/10/17 职场文书
2014党员学习习主席讲话思想汇报
2014/09/15 职场文书
政风行风整改报告
2014/11/06 职场文书
社区五一劳动节活动总结
2015/02/09 职场文书
债务纠纷代理词
2015/05/25 职场文书