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
php 常用类汇总 推荐收藏
May 13 PHP
浅析php中jsonp的跨域实例
Jun 21 PHP
PHP学习笔记(二) 了解PHP的基本语法以及目录结构
Aug 04 PHP
php实现的click captcha点击验证码类实例
Sep 23 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
Mar 25 PHP
100多行PHP代码实现socks5代理服务器[2]
May 05 PHP
php 判断字符串编码是utf-8 或gb2312实例
Nov 01 PHP
Zend Framework实现自定义过滤器的方法
Dec 09 PHP
php实现xml转换数组的方法示例
Feb 03 PHP
laravel框架 laravel-admin上传图片到oss的方法
Oct 13 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 HTML代码串截取代码
2008/12/29 PHP
javascript 极速 隐藏/显示万行表格列只需 60毫秒
2009/03/28 Javascript
div+css布局的图片连续滚动js实现代码
2010/05/04 Javascript
JavaScript 设计模式 安全沙箱模式
2010/09/24 Javascript
jquery实现的一个导航滚动效果具体代码
2013/05/27 Javascript
JavaScript中按位“异或”运算符使用介绍
2014/03/14 Javascript
nodejs创建web服务器之hello world程序
2015/08/20 NodeJs
Bootstrap每天必学之日期控制
2016/03/07 Javascript
详谈jQuery中的一些正则匹配表达式
2017/03/08 Javascript
JavaScript引用类型Function实例详解
2018/08/09 Javascript
cnpm加速Angular项目创建的方法
2018/09/07 Javascript
vue实现循环滚动列表
2020/06/30 Javascript
vue3.0 的 Composition API 的使用示例
2020/10/26 Javascript
[01:16:12]完美世界DOTA2联赛PWL S2 FTD vs Inki 第一场 11.21
2020/11/23 DOTA
在Python中移动目录结构的方法
2016/01/31 Python
python中快速进行多个字符替换的方法小结
2016/12/15 Python
值得收藏,Python 开发中的高级技巧
2018/11/23 Python
关于python之字典的嵌套,递归调用方法
2019/01/21 Python
python简单实现矩阵的乘,加,转置和逆运算示例
2019/07/10 Python
PyCharm2019安装教程及其使用(图文教程)
2019/09/29 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
2020/02/16 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
用CSS3绘制三角形的简单方法
2015/07/17 HTML / CSS
Bootstrap File Input文件上传组件
2020/12/01 HTML / CSS
美国运动鞋和运动服零售商:Footaction
2017/04/07 全球购物
美国领先的在线邮轮旅游公司:CruiseDirect
2018/06/07 全球购物
构造方法和其他方法的区别?怎么调用父类的构造方法
2013/09/22 面试题
毕业生动漫设计求职信
2013/10/11 职场文书
感恩教育活动总结
2014/05/05 职场文书
委托书怎么写
2014/07/31 职场文书
环卫工作汇报材料
2014/10/28 职场文书
小学教育见习报告
2014/10/31 职场文书
初一数学教学反思
2016/02/17 职场文书
MySQL Shell的介绍以及安装
2021/04/24 MySQL
kubernetes集群搭建Zabbix监控平台的详细过程
2022/07/07 Servers
MySQL性能指标TPS+QPS+IOPS压测
2022/08/05 MySQL