PHP+FFMPEG自动转码H264标准Mp4文件
来源:互联网 发布:中国网络巨头有哪几个 编辑:程序博客网 时间:2024/06/06 10:03
原文链接:http://www.fire-rain.com/blog/FFMPEG_H264_MP4
PHP+FFMPEG自动转码H264标准Mp4文件
最近做一个在线教学网的项目,需要实现上传任意格式视频自动为h264标准视频,使用html5播放。最终使用PHP+FFMPEG实现,在此将详细解决方案分享给大家!
配置php.ini
文件
file_uploads = on ;//是否允许通过HTTP上传文件的开关。默认为ON即是开upload_tmp_dir ;//文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹upload_max_filesize = 1024m ;//望文生意,即允许上传文件大小的最大值。默认为2M,我们设置为1Gpost_max_size = 1024m ;//指通过表单POST给PHP的所能接收的最大值,我们也设置为1Gmax_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
0 0
- PHP+FFMPEG自动转码H264标准Mp4文件
- PHP+FFMPEG自动转码H264标准Mp4文件
- PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
- PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
- PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
- ubuntu 下 ffmpeg安装 添加h264支持,支持转码mp4文件
- ffmpeg 提取mp4 文件h264 数据
- 使用ffmpeg将mp4文件中的h264码流转为raw h264文件格式或ts文件格式
- 利用FFmpeg转码生成MP4文件
- 用ffmpeg提取mp4的h264码流写文件花屏
- MP4文件两种格式AVC1和H264的区别及利用FFMPEG demux为h264码流事项
- MP4文件两种格式AVC1和H264的区别及利用FFMPEG demux为h264码流事项
- Android h264视频与G711转码合并MP4文件
- 转: FFMpeg 封装MP4 文件
- ffmpeg 最简单的转码封装mp4文件
- ffmpeg 最简单的转码封装mp4文件
- H264文件封装MP4文件
- H264 MP4起止码
- PeopleSoft之切换base language
- Linux下makefile教程
- PHP 开源学习笔记-header函数
- php 设计模式 之 装饰模式
- [LeetCode]Two Sum
- PHP+FFMPEG自动转码H264标准Mp4文件
- Phpcmsv9本地视频转码字段
- php学习
- 《Windows核心编程》——三 内核对象
- php学习笔记(二)面向对象编程
- PHP中的生成XML文件的4种方法
- java“JUC锁”
- snoopy(强大的PHP采集类) 详细介绍
- yii2 AR常用数据操作