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教程孙仲岳主讲
Jan 07 PHP
使用Limit参数优化MySQL查询的方法
Nov 12 PHP
PHP初学者最感迷茫的问题小结
Mar 27 PHP
探讨PHP JSON中文乱码的解决方法详解
Jun 06 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
Jun 24 PHP
深入解析fsockopen与pfsockopen的区别
Jul 05 PHP
php的ZipArchive类用法实例
Oct 20 PHP
PDO防注入原理分析以及注意事项
Feb 25 PHP
php函数重载的替代方法--伪重载详解
May 08 PHP
PHP实现上传图片到数据库并显示输出的方法
May 31 PHP
PHP pthreads v3下worker和pool的使用方法示例
Feb 21 PHP
PHP7 新增功能
Mar 09 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
简单易用的计数器(数据库)
2006/10/09 PHP
php生成图片验证码-附五种验证码
2015/08/19 PHP
一个很简单的办法实现TD的加亮效果.
2006/06/29 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
详解JS: reduce方法实现 webpack多文件入口
2017/02/14 Javascript
JavaScript事件方法(实例讲解)
2017/06/27 Javascript
JS继承与闭包及JS实现继承的三种方式
2017/10/15 Javascript
使用vue-cli打包过程中的步骤以及问题的解决
2018/05/08 Javascript
基于JavaScript实现每日签到打卡轨迹功能
2018/11/29 Javascript
JavaScript实现学生在线做题计时器功能
2018/12/05 Javascript
JavaScript中的this/call/apply/bind的使用及区别
2020/03/06 Javascript
JavaScript实现轮播图片完整代码
2020/03/07 Javascript
React Ant Design树形表格的复杂增删改操作
2020/11/02 Javascript
在实例中重学JavaScript事件循环
2020/12/03 Javascript
Python中asyncore的用法实例
2014/09/29 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
2015/12/24 Python
Python+OpenCV让电脑帮你玩微信跳一跳
2018/01/04 Python
django2.0扩展用户字段示例
2019/02/13 Python
详解Python 解压缩文件
2019/04/09 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
2020/02/17 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
2021/01/27 Python
英国拖鞋购买网站:Bedroom Athletics
2020/02/28 全球购物
化工工艺专业求职信
2013/09/22 职场文书
公务员职务工作的自我评价
2013/11/01 职场文书
学院书画协会部门岗位职责
2013/12/01 职场文书
幼儿园中班教学反思
2014/02/10 职场文书
运动会闭幕式解说词
2014/02/21 职场文书
小学运动会班级口号
2014/06/09 职场文书
公司授权委托书格式样本
2014/10/01 职场文书
办公室务虚会发言材料
2014/10/20 职场文书
个人政风行风自查自纠报告
2014/10/21 职场文书
长城导游词400字
2015/01/30 职场文书
教师个人自我评价
2015/03/04 职场文书
秋菊打官司观后感
2015/06/03 职场文书
spring cloud gateway中如何读取请求参数
2021/07/15 Java/Android
MySQL数据库如何查看表占用空间大小
2022/06/10 MySQL