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取得一个类的属性和方法的实现代码
May 22 PHP
PHP性能优化工具篇Benchmark类调试执行时间
Dec 06 PHP
php二维数组排序详解
Nov 06 PHP
PHP简单选择排序算法实例
Jan 26 PHP
php数组转成json格式的方法
Mar 09 PHP
php猜单词游戏
Sep 29 PHP
PHP实现webshell扫描文件木马的方法
Jul 31 PHP
php安装扩展mysqli的实现步骤及报错解决办法
Sep 23 PHP
基于PHP-FPM进程池探秘
Oct 17 PHP
laravel 5.4 + vue + vux + element的环境搭配过程介绍
Apr 26 PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
Oct 12 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
Feb 27 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数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
2011/10/31 PHP
php基于PDO连接MSSQL示例DEMO
2016/07/13 PHP
php简单生成一组与多组随机字符串的方法
2017/05/09 PHP
php之可变变量的实例详解
2017/09/12 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
2018/05/10 PHP
laravel-admin 中列表筛选方法
2019/10/03 PHP
基于jquery 的一个progressbar widge
2010/10/29 Javascript
javascript椭圆旋转相册实现代码
2012/01/16 Javascript
js与jQuery 获取父窗、子窗的iframe
2013/12/20 Javascript
js data日期初始化的5种方法
2013/12/29 Javascript
jquery+ajax验证不通过也提交表单问题处理
2014/12/12 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
前端框架Vue.js中Directive知识详解
2016/09/12 Javascript
微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
2016/12/14 Javascript
如何安装控制器JavaScript生成插件详解
2018/10/21 Javascript
Vue.js 中的实用工具方法【推荐】
2019/07/04 Javascript
vue实现表单录入小案例
2019/09/27 Javascript
ptyhon实现sitemap生成示例
2014/03/30 Python
初学Python实用技巧两则
2014/08/29 Python
详解Python中的__new__、__init__、__call__三个特殊方法
2016/06/02 Python
Python 调用Java实例详解
2017/06/02 Python
python3 flask实现文件上传功能
2020/03/20 Python
python读取各种文件数据方法解析
2018/12/29 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
2019/10/11 Python
Python尾递归优化实现代码及原理详解
2020/10/09 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
HTML5之SVG 2D入门10—滤镜的定义及使用
2013/01/30 HTML / CSS
Harrods英国:世界领先的奢侈品百货商店
2020/09/23 全球购物
介绍一些UNIX常用简单命令
2014/11/11 面试题
护理自荐信范文
2013/10/05 职场文书
运动会广播稿200米
2014/01/27 职场文书
生物技术专业求职信
2014/06/10 职场文书
2015年乡镇党务公开工作总结
2015/05/19 职场文书
2015年党风廉政建设个人总结
2015/08/18 职场文书
党组织结对共建协议书
2016/03/23 职场文书
Python移位密码、仿射变换解密实例代码
2021/06/27 Python