最近项目中需要实现上传视频过程中自动转码MP4格式的功能,想到了用FFmpeg来实现它,但从来没有操作过,查阅了很多资料,遇到了好多问题,现在终于安装成功,觉得应该写下来与人分享一下,以免有人遇到和我一样的困境。

首先我是CentOs 6.7版本 环境是LNMP 我需要用PHP实现在上传过程中实施转码功能。

下面详细介绍一下安装ffmpeg扩展的操作

要求:具有完全root访问权限。

①从repo导入GPG密钥:

rpm --import http://packages.atrpms.net/RPM-GPG-KEY.atrpms

②安装ATRPMS Repo:

rpm -ivh http://dl.atrpms.net/all/atrpms-repo-6-7.el6.x86_64.rpm

输出应该是这样:

Retrieving http://dl.atrpms.net/all/atrpms-repo-6-7.el6.x86_64.rpm

Preparing... ##################################### [100%]

1:atrpms-repo ##################################### [100%]

③开始安装ffmpeg

yum install ffmpeg

这里可能需要等一会儿,会提示你选择【y/n/d】

选择y就可以了

其实到这里的时候ffmpeg已经安装成功了

④安装ffmpeg-devel

yum install ffmpeg-devel

同样等一会,需要一些时间

如果安装成功了,执行

ffmpeg -version

显示如下:

ffmpeg version 2.2.1

built on Apr 13 2014 13:00:18 with gcc 4.4.6 (GCC) 20120305 (Red Hat 4.4.6-4)

configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --enable-shared --enable-runtime-cpudetect --enable-gpl --enable-version3 --enable-postproc --enable-avfilter --enable-pthreads --enable-x11grab --enable-vdpau --disable-avisynth --enable-frei0r --enable-libopencv --enable-libdc1394 --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --extra-cflags=‘-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC‘ --disable-stripping

libavutil 52. 66.100 / 52. 66.100

libavcodec 55. 52.102 / 55. 52.102

libavformat 55. 33.100 / 55. 33.100

libavdevice 55. 10.100 / 55. 10.100

libavfilter 4. 2.100 / 4. 2.100

libswscale 2. 5.102 / 2. 5.102

libswresample 0. 18.100 / 0. 18.100

libpostproc 52. 3.100 / 52. 3.100

证明ffmpeg已经开始工作

写一下我自己操作执行的简单代码

ffmpeg -i /路径/视频名称.后缀名 /新的路径/新的名称.新后缀

如果报The encoder ‘aac’ is experimental but experimental codecs are not enabled的错误 ,说明acc编码器的编码器没有起作用,但如果你想使用它,就在命令里加上’-strict -2’

PHP代码

用exec或者shell_exec函数的时候,需要修改php.ini。因为默认这两个函数在禁用列表里。

一般php.ini 文件都在/usr/local/php/etc/php.ini

vim /usr/local/php/etc/php.ini

查找disable_functions 把里面的exec与shell_exec删掉就可以了

:wq! 保存退出

并重启php-fpm

$cmd = ‘ffmpeg -i /home/1.wmv /home/1.mp4‘;

echo exec($cmd);

?>

如果成功的话 你可以在home文件下看到1.wmv 与1.mp4。

在多记录一些过程中出现的错误吧。

如果你是在:

(http://blog.csdn.net/loyachen/article/details/50909854)

这种方法安装的时候最后遇到了错误 发现exec执行不了 实现不了功能

你可以在代码文件夹下创建一个log.txt 并给它写入的权限

然后PHP中代码片段里

$cmd = ‘ffmpeg -i /路径/视频名称.后缀名 ‘-strict -2 /新的路径/新的名称.新后缀 2>/路径/log.txt‘;

重定向前加的数字解释

文件描述符:1和2指向同一个文件表项,也可以说错误的输出被合并了.其中0 表示键盘输入 1表示屏幕输出 2表示错误输出.把标准出错重定向到标准输出

然后执行,会把错误信息记录在log.txt中。

我之前的错误提示是:

sh: /root/bin/ffmpeg: Permission denied

就是这个目录下权限是被拒绝的。或者是,你的视频不能直接在根目录下。放在别的文件夹中,赋予权限,才能PHP执行。在根据上面的链接中的安装里,默认把扩展文件全部安装在了root文件夹下。

在执行

PKG_CONFIG_PATH =“$ HOME / ffmpeg_build / lib / pkgconfig”./configure --prefix =“$ HOME / ffmpeg_build”-extra-cflags =“ - I $ HOME / ffmpeg_build / include”--extra-ldflags =“ - L $ HOME / ffmpeg_build / lib“--bindir =”$ HOME / bin“--pkg-config-flags =” - static“--enable-gpl --enable-nonfree --enable-libfdk-aac --enable -libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265

的时候,

你指向HOME/bin这样,如果你以root的身份登录HOME最有可能/root。因此,也许替换$HOME用/usr/local ,那样就会安装在/usr/local/bin目录下,具体的我没有执行,这是查到的解决方案,希望可以给别人提供一些帮助。

原文:http://www.cnblogs.com/georgelu/p/6430475.html

ffmpeg转码php配置,PHP+ffmpeg+nginx的配置实现视频转码(转)相关推荐

  1. mac nginx加载php 配置,Mac下Nginx安装环境配置详解

    环境信息: Mac OS X 10.11.1 Homebrew 0.9.5 正文 一.安装 Nginx 1.终端执行: brew search nginx brew install nginx 当前版 ...

  2. c语言游戏服务器源码,2018大师级C++游戏服务器编程实战(视频+源码)

    免费 任务1: 课程预览PPT 免费 任务2: 课程概述 27:18 免费 任务3: IP详解第一部分 35:22 免费 任务4: IP详解PPT 免费 任务5: IP详解第二部分 31:45 免费 ...

  3. FFMPEG音频视频开发: 视频转码、合并、修改分辨率、比特率

    一.环境介绍 操作系统介绍:win10 64位 FFMPEG版本: 4.4.2 QT版本: 5.12.6 二.FFMPEG下载 ubuntu系统下编译安装ffmpeg:  https://blog.c ...

  4. 【Nginx 日志配置】【访问日志log_format】【错误日志error_log 指令】【Nginx的日志轮转】

    文章目录 Nginx 日志配置 `log_format` 指令中常用的一些变量: 访问日志 案例 可以配置段:`http`, `stream`, `server`, `location`作用域. er ...

  5. docker安装nginx,配置nginx,并成功访问

    [Nginx那些事]系列 [Nginx那些事]nginx 安装及常用指令 [Nginx那些事]Nginx 配置文件说明 [Nginx那些事]nginx原理解析 [Nginx那些事]nginx配置实例( ...

  6. nginx安装配置(图文教程)

    nginx安装配置(图文教程) nginx介绍 nginx是一款使用C语言编写的高性能的HTTP和反向代理服务器.优点是占用内存小,并发能力强. nginx下载.安装 输入以下代码下载安装包 wget ...

  7. Nginx安装配置(lua全模块、GEOIP、加入系统服务)---无坑安装

    nginx安装一般两种:A下载安装包安装.B直接yum在线安装 A:在线安装是最简便的,如果只需基本的web和转发服务就别往下看,直接[yum install nginx],少折腾,稳定才是王道. B ...

  8. 技术实践 | 网易云信视频转码提速之分片转码

    导读:视频转码作为媒体处理的核心功能,在对大视频文件转码时,通常需要花费较长时间,为了提升服务质量,我们将重点提升视频转码的速率. 文|罗微恒 网易云信高级服务端开发工程师 在媒体内容传播行业中,视频 ...

  9. 【XXL-JOB】XXL-JOB定时处理视频转码

    [XXL-JOB]XXL-JOB定时处理视频转码 文章目录 [XXL-JOB]XXL-JOB定时处理视频转码 1. 准备工作 1.1 高级配置 1.2 分片广播 2. 需求分析 2.1 作业分片方案 ...

  10. LiveVideoStack线上分享第三季(四):计算存储在视频转码中的应用

    6月13日 19:30,LiveVideoStack线上分享第三季,第四期,镕铭半导体(NETINT),中国区研发总监,刘迅思将详细介绍视频硬件转码器的发展,计算存储如何与视频转码结合,并探讨接下来典 ...

最新文章

  1. Stream Part.4
  2. java投票输出票数最高前三名,给你喜欢的作品投票,票数前三名获本平台赠送书一本。|诗花朵朵...
  3. tomcat的安装及配置
  4. rtrim php,php rtrim() 格式化中文问题
  5. js获取下月时间_js 获取 本周、下周、本月、下月、本季度、下季度的开始结束日期...
  6. Django使用问题记录
  7. cas单点登录学习:cas服务端与客户端的搭建
  8. mysql无法输入数据库_关于mysql数据库无法录入中文的问题
  9. 物联网系统怎么部署服务器,如何搭建物联网云服务器
  10. java编写时间流逝_JAVA日期时间类如何使用
  11. zkPorter:Layer-2 的可组合可扩展性
  12. java设计模式之【工厂模式】
  13. Meta http-equiv属性详解(转)
  14. 采购要管好供应商,这几个坑勿踩
  15. vue-cropper图片裁剪网络图片展示时跨域
  16. 马化腾说视频号是全公司希望
  17. 计算机三级网络技术最全知识点总结【5】
  18. 硬干货:深入剖析 MySQL 索引和 SQL 调优实战
  19. COMP0037 Coursework
  20. 计算机网络课程设计小区组网,计算机网络课程设计-组建智能化小区局域网参考.doc...

热门文章

  1. 2020程序员VS码农,“金三银四”春招指南
  2. TensorFlow学习笔记(1)--TensorFlow简介,常用基本操作
  3. 会声会影2020软件新增功能详情
  4. android xbox 手柄,Xbox One手柄将正式适配安卓9.0系统 《堡垒之夜》第一时间支持...
  5. 【MATLAB教程案例7】基于Gardner环的定时误差检测matlab仿真
  6. [AHOI2014]骑士游戏
  7. 和老板比,员工弱爆了
  8. ArcGIS中的 Map 对象
  9. 【青春记忆】叹!雪……
  10. vue前端导出excel,js-xlsx、xlsxStyle,可设置样式、表格合并;(包含获取excel列数函数、excel合并表格缺少边框处理函数)