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来实现网络服务
Sep 15 PHP
超级好用的一个php上传图片类(随机名,缩略图,加水印)
Jun 30 PHP
php 无法加载mysql的module的时候的配置的解决方案引发的思考
Jan 27 PHP
基于PHP服务端图片生成缩略图的方法详解
Jun 20 PHP
php数组去重实例及分析
Nov 26 PHP
PHP解析html类库simple_html_dom的转码bug
May 22 PHP
php使用指定字符列表生成随机字符串的方法
Apr 18 PHP
PHP实现的简单缓存类
Jul 29 PHP
PHP数组游标实现对数组的各种操作详解
Jan 26 PHP
PHP的Yii框架中YiiBase入口类的扩展写法示例
Mar 17 PHP
Laravel模糊查询区分大小写的实例
Sep 29 PHP
Laravel 框架返回状态拦截代码
Oct 18 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
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
thinkphp中空模板与空模块的用法实例
2014/11/26 PHP
PHP多进程编程实例详解
2017/07/19 PHP
用showModalDialog弹出页面后,提交表单总是弹出一个新窗口
2009/07/18 Javascript
javascript改变position值实现菜单滚动至顶部后固定
2013/01/18 Javascript
nodejs命令行参数处理模块commander使用实例
2014/09/17 NodeJs
javascript实现倒计时跳转页面
2016/01/17 Javascript
常用原生JS兼容性写法汇总
2016/04/27 Javascript
浅谈js常用内置方法和对象
2016/09/24 Javascript
vue将对象新增的属性添加到检测序列的方法
2018/02/24 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
2018/03/13 Javascript
vue-router 中 meta的用法详解
2019/11/01 Javascript
vue element-ui读取pdf文件的方法
2019/11/26 Javascript
Vue实现圆环进度条的示例
2021/02/06 Vue.js
python匿名函数的使用方法解析
2019/10/10 Python
分享PyCharm的几个使用技巧
2019/11/10 Python
python 上下文管理器及自定义原理解析
2019/11/19 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
2020/02/26 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
2020/04/21 Python
使用python+poco+夜神模拟器进行自动化测试实例
2020/04/23 Python
爱游人:Travelliker
2017/09/05 全球购物
JDBC操作数据库的基本流程是什么
2014/10/28 面试题
临床医学专业个人的自我评价
2013/09/27 职场文书
自考毕业自我鉴定范文
2013/10/27 职场文书
如何填写个人简历自我评价
2013/12/10 职场文书
投标单位介绍信
2014/01/09 职场文书
珍惜资源保护环境的建议书
2014/05/14 职场文书
实习证明格式范文
2014/10/14 职场文书
2014年副班长工作总结
2014/12/10 职场文书
给老婆道歉的话
2015/01/20 职场文书
横店影视城导游词
2015/02/06 职场文书
导游词之珠海轮廓
2019/10/25 职场文书
用Python创建简易网站图文教程
2021/06/11 Python
MySQL学习之基础操作总结
2022/03/19 MySQL
将MySQL的表数据全量导入clichhouse库中
2022/03/21 MySQL