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的宝库目录--PEAR
Oct 09 PHP
PHP+JS无限级可伸缩菜单详解(简单易懂)
Jan 02 PHP
php重定向的三种方法分享
Feb 22 PHP
浅析PHP中的UNICODE 编码与解码
Jun 29 PHP
多个PHP中文字符串截取函数
Nov 12 PHP
PHP static局部静态变量和全局静态变量总结
Mar 02 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
Apr 24 PHP
PHP使用ODBC连接数据库的方法
Jul 18 PHP
php在数据库抽象层简单使用PDO的方法
Nov 03 PHP
AJAX的使用方法详解
Apr 29 PHP
PHP实现的装箱算法示例
Jun 23 PHP
Centos7安装swoole扩展操作示例
Mar 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
雄兵连:第三季确定会出,不过时间未定,鹤熙是第三季的主角!
2020/03/13 国漫
php面向对象全攻略 (十四) php5接口技术
2009/09/30 PHP
使用php实现快钱支付功能(涉及到接口)
2013/07/01 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
PHP操作Redis常用命令的实例详解
2020/12/23 PHP
Jquery中Ajax 缓存带来的影响的解决方法
2011/05/19 Javascript
如何使用jQUery获取选中radio对应的值(一句代码)
2013/06/03 Javascript
jquery click([data],fn)使用方法实例介绍
2013/07/08 Javascript
利用jq让你的div居中的好方法分享
2013/11/21 Javascript
js sort 二维数组排序的用法小结
2014/01/24 Javascript
jQuery 1.9移除了$.browser可以使用$.support来替代
2014/09/03 Javascript
jQuery中[attribute^=value]选择器用法实例
2014/12/31 Javascript
使用jQuery处理AJAX请求的基础学习教程
2016/05/10 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
2016/07/26 Javascript
js 获取当前web应用的上下文路径实现方法
2016/08/19 Javascript
JS前向后瞻正则表达式定义与用法示例
2016/12/27 Javascript
jQuery EasyUI 页面加载等待及页面等待层
2017/02/06 Javascript
vue中component组件的props使用详解
2017/09/04 Javascript
简单谈谈vue的过渡动画(推荐)
2017/10/11 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
React Native 截屏组件的示例代码
2017/12/06 Javascript
微信小程序自定义组件封装及父子间组件传值的方法
2018/08/28 Javascript
[02:36]DOTA2混沌骑士 英雄基础教程
2013/11/26 DOTA
学习python的几条建议分享
2013/02/10 Python
利用matplotlib+numpy绘制多种绘图的方法实例
2017/05/03 Python
PyQt5每天必学之布局管理
2018/04/19 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
2018/05/30 Python
django 获取字段最大值,最新的记录操作
2020/08/09 Python
如何设置PyCharm中的Python代码模版(推荐)
2020/11/20 Python
教师节商场活动方案
2014/02/13 职场文书
在校实习生求职信
2014/06/18 职场文书
党员个人对照检查材料
2014/10/01 职场文书
安全生产月宣传标语
2014/10/06 职场文书
终止劳动合同证明书样本
2014/11/19 职场文书
MySQL创建索引需要了解的
2021/04/08 MySQL
Python Django搭建文件下载服务器的实现
2021/05/10 Python