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
C# Assembly类访问程序集信息
Jun 13 PHP
PHP采集利器 Snoopy 试用心得
Jul 03 PHP
php获取Google机器人访问足迹的方法
Apr 15 PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
May 12 PHP
phpcms手机内容页面添加上一篇和下一篇
Jun 05 PHP
PHP如何将XML转成数组
Apr 04 PHP
关于PHP文件的自动运行方法分析
May 13 PHP
YII视图整合kindeditor扩展的方法
Jul 13 PHP
php实现的SSO单点登录系统接入功能示例分析
Oct 12 PHP
详解PHP中的外观模式facade pattern
Feb 05 PHP
微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解
Apr 10 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
php imagecreatetruecolor 创建高清和透明图片代码小结
2010/05/15 PHP
php做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
php简单判断文本编码的方法
2015/07/30 PHP
PHP GD库相关图像生成和处理函数小结
2016/09/30 PHP
php正则表达式基本知识与应用详解【经典教程】
2017/04/17 PHP
PHP7数组的底层实现示例
2019/08/25 PHP
PHP的介绍以及优势详细分析
2019/09/05 PHP
在视频前插入广告
2006/11/20 Javascript
JScript 脚本实现文件下载 一般用于下载木马
2009/10/29 Javascript
19个很有用的 JavaScript库推荐
2011/06/27 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
node操作mysql数据库实例详解
2017/03/17 Javascript
jQuery dateRangePicker插件使用方法详解
2017/07/28 jQuery
get  post jsonp三种数据交互形式实例详解
2017/08/25 Javascript
vue组件与复用详解
2018/04/08 Javascript
详解ECMAScript typeof用法
2018/07/25 Javascript
JavaScript实现图片的放大缩小及拖拽功能示例
2019/05/14 Javascript
vue项目中使用scss的方法步骤
2019/05/16 Javascript
[54:06]OG vs TNC 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python列表操作之extend和append的区别实例分析
2015/07/28 Python
python基础教程之五种数据类型详解
2017/01/12 Python
浅谈numpy生成数组的零值问题
2018/11/12 Python
关于PyTorch源码解读之torchvision.models
2019/08/17 Python
Pycharm添加虚拟解释器报错问题解决方案
2020/10/13 Python
python调用win32接口进行截图的示例
2020/11/11 Python
虚拟环境及venv和virtualenv的区别说明
2021/02/05 Python
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
不可轻视HTML5!App三年内将被html5顶替彻底消失
2015/11/18 HTML / CSS
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
毕业自我评价范文
2013/11/17 职场文书
家长给孩子的表扬信
2014/01/17 职场文书
教师听课评语大全
2014/12/31 职场文书
推荐信范文大全
2015/03/27 职场文书
教你用Python matplotlib库制作简单的动画
2021/06/11 Python
教你用python实现12306余票查询
2021/06/30 Python