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 相关文章推荐
新安装的MySQL数据库需要注意的安全知识
Jul 30 PHP
PHP base64+gzinflate压缩编码和解码代码
Oct 03 PHP
php函数的常用方法及注意之处小结
Jul 10 PHP
PHP中使用php://input处理相同name值的表单数据
Feb 03 PHP
PHP输出九九乘法表代码实例
Mar 27 PHP
php实现简单的上传进度条
Nov 17 PHP
PHP flush 函数使用注意事项
Aug 26 PHP
PHP 芝麻信用接入的注意事项
Dec 01 PHP
使用php实现网站验证码功能【推荐】
Feb 09 PHP
yii2.0整合阿里云oss上传单个文件的示例
Sep 19 PHP
php中通用的excel导出方法实例
Dec 30 PHP
PHP中ltrim()函数的用法与实例讲解
Mar 28 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_SELF,SCRIPT_NAME,REQUEST_URI区别
2014/12/24 PHP
php反射类ReflectionClass用法分析
2016/05/12 PHP
PHP字符串中抽取子串操作实例分析
2019/06/22 PHP
Yii框架中使用PHPExcel的方法分析
2019/07/25 PHP
Laravel定时任务的每秒执行代码
2019/10/22 PHP
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
FF IE浏览器修改标签透明度的方法
2014/01/27 Javascript
JavaScript省市联动实现代码
2014/02/15 Javascript
jquery解决客户端跨域访问问题
2015/01/06 Javascript
js实现简单随机抽奖的方法
2015/01/27 Javascript
JavaScript操作Cookie详解
2015/02/28 Javascript
JavaScript判断是否为数字的4种方法及效率比较
2015/04/01 Javascript
JS 数字转换为大写金额的简单实例
2016/08/04 Javascript
使用vue.js实现联动效果的示例代码
2017/01/10 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
2017/04/25 Javascript
JQuery和html+css实现带小圆点和左右按钮的轮播图实例
2017/07/22 jQuery
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
javascript中如何判断类型汇总
2019/05/14 Javascript
vue element-ui之怎么封装一个自己的组件的详解
2019/05/20 Javascript
详解jQuery中的prop()使用方法
2020/01/05 jQuery
[03:52]显微镜下的DOTA2第三期——英雄在无聊的时候干什么
2014/06/20 DOTA
python算法学习之桶排序算法实例(分块排序)
2013/12/18 Python
Python def函数的定义、使用及参数传递实现代码
2014/08/10 Python
python3 读写文件换行符的方法
2018/04/09 Python
python如何生成各种随机分布图
2018/08/27 Python
Pytorch中index_select() 函数的实现理解
2019/11/19 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
selenium学习教程之定位以及切换frame(iframe)
2021/01/04 Python
Python之多进程与多线程的使用
2021/02/23 Python
下列程序在32位linux或unix中的结果是什么
2015/01/26 面试题
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
2014年信息技术工作总结
2014/12/16 职场文书
医生个人年终总结
2015/02/28 职场文书
OpenCV 图像梯度的实现方法
2021/07/25 Python