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 相关文章推荐
与数据库连接
Oct 09 PHP
PHP时间戳使用实例代码
Jun 07 PHP
解析PayPal支付接口的PHP开发方式
Nov 28 PHP
PHP递归调用的小技巧讲解
Feb 19 PHP
php页面跳转代码 输入网址跳转到你定义的页面
Mar 28 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
Jun 06 PHP
php操作redis缓存方法分享
Jun 03 PHP
PHP学习笔记之php文件操作
Jun 03 PHP
php foreach如何跳出两层循环(详解)
Nov 05 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
Jan 17 PHP
基于thinkphp6.0的success、error实现方法
Nov 05 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
May 02 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
php生成WAP页面
2006/10/09 PHP
php上传文件,创建递归目录的实例代码
2013/10/18 PHP
PHP生成自适应大小的缩略图类及使用方法分享
2014/05/06 PHP
thinkphp实现发送邮件密码找回功能实例
2014/12/01 PHP
javascript 选择文件夹对话框(web)
2009/07/07 Javascript
JavaScript 学习笔记(十四) 正则表达式
2010/01/22 Javascript
js中字符替换函数String.replace()使用技巧
2011/08/14 Javascript
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
13个PHP函数超实用
2015/10/21 Javascript
jQuery中deferred对象使用方法详解
2016/07/14 Javascript
jquery 判断selection range 是否在容器中的简单实例
2016/08/02 Javascript
js基础之DOM中document对象的常用属性方法详解
2016/10/28 Javascript
基于JavaScript实现本地图片预览
2017/02/08 Javascript
Bootstrap表单制作代码
2017/03/17 Javascript
详解如何使用 vue-cli 开发多页应用
2017/12/16 Javascript
vue集成百度UEditor富文本编辑器使用教程
2018/09/21 Javascript
详解@Vue/Cli 3 Invalid Host header 错误解决办法
2019/01/02 Javascript
一秒学会微信小程序制作table表格
2019/02/14 Javascript
vue 图片裁剪上传组件的实现
2020/11/12 Javascript
学习python类方法与对象方法
2016/03/15 Python
Python内置函数reversed()用法分析
2018/03/20 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
2019/04/11 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
python构造函数init实例方法解析
2020/01/19 Python
python实现图片,视频人脸识别(opencv版)
2020/11/18 Python
html5 CSS过度-webkit-transition使用介绍
2013/07/02 HTML / CSS
使用HTML5 Canvas API控制字体的显示与渲染的方法
2016/03/24 HTML / CSS
加州风格的游泳和沙滩装品牌:Cupshe
2019/06/10 全球购物
主键(Primary Key)约束和唯一性(UNIQUE)约束的区别
2013/05/29 面试题
公务员培训自我鉴定
2013/09/19 职场文书
项目负责人岗位职责
2015/02/15 职场文书
学生保证书格式
2015/02/27 职场文书
毕业设计论文致谢词
2015/05/14 职场文书
感恩教育观后感
2015/06/17 职场文书
神秘岛读书笔记
2015/07/01 职场文书
2019大学生暑期实习心得总结
2019/08/21 职场文书