PHP从FLV文件获取视频预览图的方法


Posted in PHP onMarch 12, 2015

本文实例讲述了PHP从FLV文件获取视频预览图的方法。分享给大家供大家参考。具体实现方法如下:

<?php

// references http://www.longtailvideo.com/support/forum/Modules/12661/External-PHP-with-FFmpeg-using-readfile-

// generate a preview image from an FLV file on-the-fly, or to save

// call with: ffmpeg_image.php?file=video.flv&time=00:00:05&browser=true

// call with: ffmpeg_image.php?file=video.flv&percent=75.3&browser=true

// no time defaults to "00:00:01" (one second), no browser defaults to "true"

$videofile = (isset($_GET['file'])) ? strval($_GET['file']) : 'video.flv';

$image = substr($videofile, 0, strlen($videofile) - 4);

$time = (isset($_GET['time'])) ? strval($_GET['time']) : '00:00:01';

// debug ("  File: ", $videofile);

// debug (" Image: ", $image);

// debug ("  Time: ", $time);

// check time format

if (!preg_match('/\d\d:\d\d:\d\d/', $time))

{

  $time = "00:00:00";

}

if (isset($_GET['percent']))

{

  $percent = $_GET['percent'];

// debug (" Percent: ", $percent);

  ob_start();

  exec("/usr/bin/ffmpeg -i \"". $videofile . "\" 2>&1");

  $duration = ob_get_contents();

  ob_end_clean();

  // debug ("Duration: ", $duration);

  preg_match('/Duration: (.*?),/', $duration, $matches);

  $duration = $matches[1];

// debug ("Duration: ", $duration);

  $duration_array = split(':', $duration);

  $duration = $duration_array[0] * 3600 + $duration_array[1] * 60 + $duration_array[2];

  $time = $duration * $percent / 100;

// debug (" Time: ", $time);

  $time = intval($time/3600) . ":" . intval(($time-(intval($time/3600)*3600))/60) . ":" . sprintf("%01.3f", ($time-(intval($time/60)*60)));

// debug (" Time: ", $time);

}

$browser = (isset($_GET['browser'])) ? strval($_GET['browser']) : 'true';

// debug (" Browser: ", $browser);

if ($browser == "true")

{

  header('Content-Type: image/png');

  exec("/usr/bin/ffmpeg -vcodec png -i \"" . $videofile . "\" -ss " . $time . " -vframes 1 -f image2 -");

//header('Content-Type: image/jpeg');

//exec("/usr/bin/ffmpeg -vcodec mjpeg -i \"" . $videofile . "\" -ss " . $time . " -vframes 1 -f image2 -");

}

else

{

  exec("/usr/bin/ffmpeg -vcodec png -i \"" . $videofile . "\" -ss " . $time . " -vframes 1 -f image2 \"" . $image . "\"%d.png");

//exec("/usr/bin/ffmpeg -vcodec mjpeg -i \"" . $videofile . "\" -ss " . $time . " -vframes 1 -f image2 \"" . $image . "\"%d.jpg");

}

?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
Discuz 模板引擎的封装类代码
Jul 18 PHP
PHP比你想象的好得多
Nov 27 PHP
PHP扩展程序实现守护进程
Apr 16 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
Nov 10 PHP
详解WordPress中调用评论模板和循环输出评论的PHP函数
Jan 05 PHP
php中关于长度计算容易混淆的问题分析
May 27 PHP
Zend Framework入门教程之Zend_Config组件用法详解
Dec 09 PHP
在php的yii2框架中整合hbase库的方法
Sep 20 PHP
php如何计算两坐标点之间的距离
Dec 29 PHP
php如何比较两个浮点数是否相等详解
Feb 12 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
Oct 15 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 PHP
PHP简单获取视频预览图的方法
Mar 12 #PHP
php使用memcoder将视频转成mp4格式的方法
Mar 12 #PHP
PHP实现将视频转成MP4并获取视频预览图的方法
Mar 12 #PHP
PHP实现从远程下载文件的方法
Mar 12 #PHP
PHP判断网络文件是否存在的方法
Mar 12 #PHP
php实现过滤UBB代码的类
Mar 12 #PHP
PHP列出MySQL中所有数据库的方法
Mar 12 #PHP
You might like
德生PL330的评价与改造
2021/03/02 无线电
如何用PHP实现插入排序?
2013/04/10 PHP
php中使用session防止用户非法登录后台的方法
2015/01/27 PHP
jquery表单验证使用插件formValidator
2012/11/10 Javascript
改变文件域的样式实现思路同时兼容ie、firefox
2013/10/23 Javascript
JQuery对表单元素的基本操作使用总结
2014/07/18 Javascript
jquery用offset()方法获得元素的xy坐标
2014/09/06 Javascript
js内置对象处理_打印学生成绩单的简单实现
2016/09/24 Javascript
jQuery checkbox选中问题之prop与attr注意点分析
2016/11/15 Javascript
jQuery 常见小例汇总
2016/12/14 Javascript
angular.js 路由及页面传参示例
2017/02/24 Javascript
利用Vue.js实现求职在线之职位查询功能
2017/07/03 Javascript
IntelliJ IDEA 安装vue开发插件的方法
2017/11/21 Javascript
浅谈webpack对样式的处理
2018/01/05 Javascript
js操作二进制数据方法
2018/03/03 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
2019/05/16 Javascript
Webpack按需加载打包chunk命名的方法
2019/09/22 Javascript
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
python实现多线程网页下载器
2018/04/15 Python
pygame游戏之旅 添加键盘按键的方法
2018/11/20 Python
pycharm创建一个python包方法图解
2019/04/10 Python
pyQT5 实现窗体之间传值的示例
2019/06/20 Python
python提取xml里面的链接源码详解
2019/10/15 Python
使用Python的networkx绘制精美网络图教程
2019/11/21 Python
解决python web项目意外关闭,但占用端口的问题
2019/12/17 Python
基于PyTorch的permute和reshape/view的区别介绍
2020/06/18 Python
零件设计自荐信范文
2013/11/27 职场文书
幼儿园教师请假制度
2014/01/16 职场文书
渔夫的故事教学反思
2014/02/14 职场文书
应届生求职自荐信范文
2014/04/07 职场文书
抗震救灾标语
2014/06/26 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
2016年先进教师个人事迹材料
2016/02/26 职场文书
2016年幼儿园教师师德承诺书
2016/03/25 职场文书
OpenCV-Python实现轮廓的特征值
2021/06/09 Python