最近项目中需要实现上传视频过程中自动转码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目录下,具体的我没有执行,这是查到的解决方案,希望可以给别人提供一些帮助。

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. 【工作分解法】IT人,你的工作“轻松”么?
  2. zookeeper无故挂掉,启动不起来的问题
  3. hdu1372 Knight Moves BFS 搜索
  4. 重新安装SCCM 2012 client,解决Windows10 1909在线更新问题
  5. html:(16):a标签
  6. jQuery Mobile弹出对话框后不刷新原页面,保持原页面内容不变
  7. imu相机标定_解放双手——相机与IMU外参的在线标定
  8. 读《广州的一场春梦》有感
  9. QQ正常网页无法访问故障分析
  10. 随机函数_巧用随机函数,生成各种姓名组合。
  11. 【KITTI可视化】kitti三维目标标注可视化
  12. CISCO 2811 路由器配置命令全集
  13. 2020 智能零售领域最具商业合作价值企业盘点
  14. 2021年中国消费金融行业贷款情况及发展趋势分析:互联网消费金融放款规模达到20.2万亿[图]
  15. 学会使用help()
  16. evc小项目:Gps功分器测试
  17. 被骂“没前途”,那个996的程序员做错了什么?
  18. 常用汉字的UNICODE和对应的繁体字
  19. 计算机专硕考数一英一,专硕难度升级!改考数一英一,这所近2.3万人报考的热门高校大改...
  20. Maven仓库管理器Nexus的安装配置

热门文章

  1. Legacy octal literals are not allowed in strict mode 严格模式下禁止使用 八进制
  2. GraphX与GraphLab、Pregel的对比
  3. psv无线怎么连接电脑连接电脑连接服务器,PSVR怎么接电脑 PS VR连接电脑使用教程...
  4. FS-2工作室QQ群建立通知
  5. 外地人如何在上海办准生证 或者 2016年准生证办理流程 不同版本
  6. 行逻辑连接的顺序表实现稀疏矩阵乘法
  7. QT运行时报错Gtk-Message: 20:31:49.219: Failed to load module “canberra-gtk-module
  8. Chrome浏览器怎么设置主页
  9. 计算机课程CAP,大学计算机基础CAP
  10. 多目标优化(一):Pareto理论相关概念解析