搜尋
首頁php教程php手册PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件

最近做一个在线教学网的项目,需要实现上传任意格式视频自动为h264标准视频,使用html5播放。最终使用PHP+FFMPEG实现,在此将详细解决方案分享给大家!

配置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

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器