最近项目和音频有关,了解到了FFMPEG工具
FFMPEG简介
FFmpeg是领先的多媒体框架。在这个框架中包含有各种工具,每一个用于完成特定的功能。例如:
ffserver能够将多媒体文件转化为用于实时广播的流;
ffprobe用于分析多媒体流;
ffplay可以当作一个简易的媒体播放器;
ffmpeg则能够转换多媒体文件格式。
注意:ffmpeg和FFmpeg不是同一个东西。FFmpeg是框架,而ffmpeg是一个其中的一个功能。
处理或获取多媒体文件(音/视频)信息目前确定要用FFmpeg,有以下2中方式(以php语言为例):
使用php-ffmpeg扩展
依赖:php-ffmpeg扩展
优点:使用方便
建议:不推荐,对视频需求要求不高可考虑使用(1.项目比较老,年久失修,无人维护;2. 少新的视频格式可能会不支持;)
该方案需要安装php-ffmpeg扩展,项目地址:http://ffmpeg-php.sourceforge.net/
使用PHP调用命令
题外话:
PHP有很多函数可以直接调用shell,如:system,passthru,exec,shell_exec等,一般情况下不推荐使用,而且强烈建议在php.ini中使用disable_functions禁用这些危险函数(各种骇客,脚本小子,后门作者的最爱),特殊需要可以用php -c指定另外的php.ini配置
接下来要说的是获取媒体文件信息《FFMPEG获取视频播放时长》文中的基本思路相同,都是使用php函数来调用shell命令, 不同的是没有使用ffmpeg命令,该文中是使用正则来匹配命令输出结果,而实际上FFmpeg提供了获取媒体文件的命令,还可以输出json格式处理起来非常方便:
# 以json格式输出媒体文件信息
ffprobe -v quiet -print_format json -show_format -show_streams input.mp4
# 命令
ffmpeg -i input.mp4
除了获取视频信息以外还可以调用ffmpeg命令对媒体做更多的事情,包括但不限于:
视频截图
ffmpeg -y –i input.flv –r 1 –q:v 2 –f image2 output.jpg
拆分/合并视频
ffmpeg -i input.flv -ss 4 -t 16 output.mp4
从视频中提取音/视频
ffmpeg -i input.flv -vn -c:a copy ouput.mp3
ffmpeg -i input input.flv -an -c:v libx264 output.mp4
给视频添加文字/图片水印
ffmpeg -i input.flv -vf "drawtext=text=teachmyself:fontfile=/Library/Fonts/Arial.ttf:fontsize=16:[email protected]:x=w-tw-16:y=h-th-16" -c:v libx264 -c:a copy output.mp4
给视频添加倒影效果
ffmpeg -i input.flv -vf 'split[up][down]; [up]pad=iw:ih*2'[up]; [down]vflip[down]; [up][down]overlay=0:h' output.mp4
非常强大,因为大家常见的暴风影音,QQ影音,格式工厂等大多播放器及视频处理软件都是用它包了个壳...
大多信息来自网络,时间久远,无法一一列出来源往见谅,描述有误望给予指正,感激不尽!
这里还有几篇文章推荐下:
《FFMPEG视音频编解码零基础学习方法》:
http://blog.csdn.net/leixiaohua1020/article/details/15811977
官网wiki《PHP中使用FFmpeg》:
https://trac.ffmpeg.org/wiki/PHP%E4%B8%AD%E4%BD%BF%E7%94%A8FFmpeg
英文教程《A FFmpeg Tutorial For Beginners》:
http://linuxers.org/tutorial/ffmpeg-tutorial-beginners
ffmpeg 翻译文档 (ffmpeg-all 包含重要组件)(热心人士翻译的ffmpeg文档)
https://xdsnet.gitbooks.io/other-doc-cn-ffmpeg/content/index.html
https://www.gitbook.com/book/xdsnet/other-doc-cn-ffmpeg/details
https://wanglongqi.github.io/tools/2014/12/23/ffmpegdoc/
转自:https://segmentfault.com/a/1190000003804078