利用Ffmpeg获得flv视频缩略图和视频时间的代码
问题描述;获得flv视频的缩略图和视频时间长度
这里简单说一下:FFmpeg是用于录制、转换和流化音频和视频的完整解决方案,一套领先的音/视频编解码类库。官方正式版ffmpeg不支持rmvb和rm格式. 不过有很多解决方法 FFmpeg的官方网址是 。 中文Wiki是 ,资料很多。 ㈠安装FFMEPG操作系统:centos6 找了那么多安装FFMEPG的文章,基本上都是没有注释,需要安装那么多软件包,也不说明一下是干什么用的,纠结。。而且安装上面步骤总是出问题,最后只得寻找官网,认真的看一下,确实官方的资料很好用,以后一定要优先看官网资料。 由于FFMEPG本身就支持flv格式,也就是说目前不需要安装什么插件只需要安装FFMEPG,安装FFMEPG有两种方式:①源码包安装,这个不知道怎么回事老是报错②yum命令安装,centos这个yum是最好的命令,呵呵 下面是安装步骤: ㈠安装编译环境 #yum install -y automake autoconf libtool gcc gcc-c++ ㈡安装所需程序库的RPM包到 centos rpm -Uhv 安装 Install ffmpeg 等模块 ***********************************centos下面的安装已经完成! :FFMPEG-PHP 安装 FFMPEG-PHP 然后修改php.ini文件 在php.ini文件加上这句 然后重新启动apache ******* ---------------------------------------------------------------------------------------------------------- 但是我打开phpinfo并没有看到FFMPEG,不知道怎么回事,官网上面提供的安装方法是需要重新编译php来支持ffmpeg,我嫌麻烦,考虑到服务都是在centos上运行,既然centos已经可以, P
示例1: 示例2: 示例3:这个是我需要的! ffmpeg -i test.flv -y -f mjpeg -ss 3 -t 0.001 -s 320x240 test.jpg 示例4:
参数说明: -L license -h 帮助 -fromats 显示可用的格式,编解码的,协议的 -f fmt 强迫采用格式fmt -I filename 输入文件 -y 覆盖输出文件 -t duration 设置纪录时间 hh:mm:ss[.xxx]格式的记录时间也支持 -ss position 搜索到指定的时间 [-]hh:mm:ss[.xxx]的格式也支持 s wxh: 指定视频的宽和高 **************************************************************************** 通过上面的截图:我们可以看到输入的flv信息和输出的jpg图片信息,Duration就是本文需要的视频长度,但是我不知道如何取得这个变量 下面是PHP调用shell命令获得缩略图的代码
exec("/usr/bin/ffmpeg -i /usr/local/apache/htdocs/test.flv -y -f mjpeg -ss 3 -t 0.001 -s 320x240 /usr/local/apache/htdocs/test.jpg",$out,$status); print_r($status);//0是成功 1是失败 ************************************************* ①对于存储生成图片的文件夹需要有写入权限 #chomd 777 /usr/local/apache/htdocs ②在php.ini中有disable_functions禁用了php调用shell命令函数, disable_functions = proc_open,popen,exec,system,shell_exec,passthru 解决办法:注释掉disable_functions这一项 #disable_functions = proc_open,passthru 或者disable_functions = (把禁言的函数除去) 保存关闭开启就可以了 ③php.ini中的安全模式必须关闭 才可以调用exec函数 safe_mode = off ④图片时间截取也很重要,很有可能是无效图片或者是黑屏 建议 增加关键帧,通常第一帧为关键帧,可以使用:vframes:帧参数, 舍弃微秒参数,只保留时间参数/usr/bin/ffmpeg -i /usr/local/apache/htdocs/test.flv -y -f mjpeg -ss 3 -s 320x240 /usr/local/apache/htdocs/test.jpg **************************************************************************** 上面都是解决获得缩略图的方法,我看到有人在安卓开发中利用ffmpeg获得手机里面视频的缩略图,考虑到安卓的底层是liunx,应该是通用的!下面是如何获得视频的长度,虽然Duration就是需要的视频长度,但是不知道如何去取,如果有人会,可以教一下我,跪求! 你在网上搜一下:php获得flv视频长度 可以发现有很多结果,但是我翻了十几页发现tmd的都是复制转载的,而且全部都不能使用,不知道为什么?这个代码和诡异,大家可以把网上的代码运行一下,你会发现这个跟不是php,因为编辑器就没有显示语法高亮,没有办法我照着网上手写了一边代码,发现还是报错诡异了 。。。报错还很奇怪 ,感兴趣的可以试试,没有办法我决定搜英文资料,最后在外国网站看到了代码,拿来一试可以!哈哈哈 还是老外的东西好使啊 错误的代码: 下面是正确的代码: 预览效果: 我的视频是55秒正好!ok (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |