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
PHPlet在Windows下的安装
Oct 09 PHP
php预定义常量
Dec 25 PHP
linux php mysql数据库备份实现代码
Mar 10 PHP
php设计模式 State (状态模式)
Jun 26 PHP
PHP高级对象构建 工厂模式的使用
Feb 05 PHP
php变量范围介绍
Oct 15 PHP
PHP设计模式之命令模式的深入解析
Jun 13 PHP
浅析linux下apache服务器的配置和管理
Aug 10 PHP
PHP IE中下载附件问题解决方法
Jan 07 PHP
ThinkPHP删除栏目(实现批量删除栏目)
Jun 21 PHP
tp5.1 框架数据库-数据集操作实例分析
May 26 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开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
PHP基础教程(php入门基础教程)一些code代码
2013/01/06 PHP
原生JS实现旋转木马式图片轮播插件
2016/04/25 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
2016/08/29 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
基于AngularJS的拖拽文件上传的实例代码
2017/07/15 Javascript
js模拟百度模糊搜索的实例
2017/08/04 Javascript
koa2实现登录注册功能的示例代码
2018/12/03 Javascript
JavaScript实现指定数量的并发限制的示例代码
2020/03/10 Javascript
js对象属性名驼峰式转下划线的实例代码
2020/09/17 Javascript
[05:13]2018DOTA2亚洲邀请赛主赛事第二日战况回顾 LGD、VG双雄携手晋级
2018/04/05 DOTA
python类的方法属性与方法属性的动态绑定代码详解
2017/12/27 Python
python numpy 显示图像阵列的实例
2018/07/02 Python
Python自定义装饰器原理与用法实例分析
2018/07/16 Python
Python函数装饰器常见使用方法实例详解
2019/03/30 Python
Django项目使用CircleCI的方法示例
2019/07/14 Python
python 根据字典的键值进行排序的方法
2019/07/24 Python
Python实现代码统计工具
2019/09/19 Python
python  logging日志打印过程解析
2019/10/22 Python
python 命名规范知识点汇总
2020/02/14 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
2020/06/24 Python
如何使用Pytorch搭建模型
2020/10/26 Python
python使用dlib进行人脸检测和关键点的示例
2020/12/05 Python
Html5移动端适配IphoneX等机型的方法
2019/06/25 HTML / CSS
全球知名的婚恋交友网站:Match.com
2017/01/05 全球购物
FitFlop澳大利亚官网:英国符合人体工学的鞋类品牌
2017/06/05 全球购物
保送生自荐信范文
2013/10/06 职场文书
计划生育证明格式及范本
2014/10/09 职场文书
初中生散播谣言检讨书
2014/11/17 职场文书
2016年教师节特级教师获奖感言
2015/12/09 职场文书
学习心理学心得体会
2016/01/22 职场文书
旅游安全责任协议书
2016/03/22 职场文书
jquery插件实现代码雨特效
2021/04/24 jQuery
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技
volatile保证可见性及重排序方法
2022/08/05 Java/Android