php 调用ffmpeg获取视频信息的简单实现

ffmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序,包含了libavcodec,保证高可移值性和编解码质量。

本文将介绍使用php调用ffmpeg获取视频信息,调用ffmpeg首先需要服务器上安装了ffmpeg,安装方法很简单,可自行搜索。

代码如下:

<?php
// 定义ffmpeg路径及命令常量
define('FFMPEG_CMD', '/usr/local/bin/ffmpeg -i "%s" 2>&1');

/**
 * 使用ffmpeg获取视频信息
 * @param String $file 视频文件
 * @return Array
 */
function getVideoInfo($file){
 ob_start();
 passthru(sprintf(FFMPEG_CMD, $file));
 $video_info = ob_get_contents();
 ob_end_clean();

 // 使用输出缓冲,获取ffmpeg所有输出内容
 $ret = array();

 // Duration: 00:33:42.64, start: 0.000000, bitrate: 152 kb/s
 if (preg_match("/Duration: (.*?), start: (.*?), bitrate: (\d*) kb\/s/", $video_info, $matches)){
  $ret['duration'] = $matches[1]; // 视频长度
  $duration = explode(':', $matches[1]);
  $ret['seconds'] = $duration[0]*3600 + $duration[1]*60 + $duration[2]; // 转为秒数
  $ret['start'] = $matches[2]; // 开始时间
  $ret['bitrate'] = $matches[3]; // bitrate 码率 单位kb
 }

 // Stream #0:1: Video: rv20 (RV20 / 0x30325652), yuv420p, 352x288, 117 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
 if(preg_match("/Video: (.*?), (.*?), (.*?)[,\s]/", $video_info, $matches)){
  $ret['vcodec'] = $matches[1];  // 编码格式
  $ret['vformat'] = $matches[2]; // 视频格式
  $ret['resolution'] = $matches[3]; // 分辨率
  list($width, $height) = explode('x', $matches[3]);
  $ret['width'] = $width;
  $ret['height'] = $height;
 }

 // Stream #0:0: Audio: cook (cook / 0x6B6F6F63), 22050 Hz, stereo, fltp, 32 kb/s
 if(preg_match("/Audio: (.*), (\d*) Hz/", $video_info, $matches)){
  $ret['acodec'] = $matches[1];  // 音频编码
  $ret['asamplerate'] = $matches[2]; // 音频采样频率
 }

 if(isset($ret['seconds']) && isset($ret['start'])){
  $ret['play_time'] = $ret['seconds'] + $ret['start']; // 实际播放时间
 }

 $ret['size'] = filesize($file); // 视频文件大小
 $video_info = iconv('gbk','utf8', $video_info);
 return array($ret, $video_info);

}

// 输出视频信息
$video_info = getVideoInfo('myvideo.avi');
print_r($video_info[0]);
?>

输出:

Array
(
 [duration] => 00:33:42.64
 [seconds] => 2022.64
 [start] => 0.000000
 [bitrate] => 152
 [vcodec] => rv20 (RV20 / 0x30325652)
 [vformat] => yuv420p
 [resolution] => 352x288
 [width] => 352
 [height] => 288
 [acodec] => cook (cook / 0x6B6F6F63)
 [asamplerate] => 22050
 [play_time] => 2022.64
 [size] => 38630744
)

以上这篇php 调用ffmpeg获取视频信息的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

时间: 2017-04-02

php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间

FFmpeg是一个视频插件,我们可以利用调用FFmpeg接口来获取视频的相关信息,包括视频的播放时长,视频的码率,视频的缩略图以及视频创建时间,本文章向大家介绍php如何使用FFmpeg接口获取视频信息,需要的朋友可以参考一下. FFmpeg获得视频文件的缩略图: function getVideoCover($file,$time,$name) { if(empty($time))$time = '1';//默认截取第一秒第一帧 $strlen = strlen($file); // $vid

PHP使用FFmpeg获取视频播放总时长与码率等信息

请注意:这篇文章中会用到passthru,可能部分虚拟主机会将此命令禁用. 代码如下: PHP <?php define('FFMPEG_PATH', '/usr/local/ffmpeg2/bin/ffmpeg -i "%s" 2>&1'); function getVideoInfo($file) { $command = sprintf(FFMPEG_PATH, $file); ob_start(); passthru($command); $info = o

PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件

配置php.ini文件 复制代码 代码如下: file_uploads = on ;//是否允许通过HTTP上传文件的开关.默认为ON即是开 upload_tmp_dir ;//文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹 upload_max_filesize = 1024m ;//望文生意,即允许上传文件大小的最大值.默认为2M,我们设置为1G post_max_size = 1024m ;//指通过表单POST给PHP的所能接收的最大值,我们也设置为1G ma

php利用ffmpeg提取视频中音频与视频画面的方法详解

前言 FFmpeg的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward",FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.可以轻易地实现多种视频格式之间的相互转换. FFmpeg的用户有Google,Facebook,Youtube,优酷,爱奇艺,土豆等. 组成 1.libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能,包含demuxer

PHP中使用FFMPEG获取视频缩略图和视频总时长实例

复制代码 代码如下: //获得视频文件的缩略图function getVideoCover($file,$time,$name) {     if(empty($time))$time = '1';//默认截取第一秒第一帧     $strlen = strlen($file);     // $videoCover = substr($file,0,$strlen-4);     // $videoCoverName = $videoCover.'.jpg';//缩略图命名     //exe

php使用ffmpeg获取视频信息并截图的实现方法

本文实例讲述了php使用ffmpeg获取视频信息并截图的方法.分享给大家供大家参考,具体如下: $movie = new ffmpeg_movie('4.mp4'); $width=$movie->getFrameWidth(); $height=$movie->getFrameHeight(); $count= $movie->getFrameCount(); print $count . ''; $n = round ( $count/16 ); print $n . ''; for

PHP使用ffmpeg给视频增加字幕显示的方法

本文实例讲述了PHP使用ffmpeg给视频增加字幕显示的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <?php $dir = './'; // set to current folder if ($handle = opendir($dir)) {  while(false!== ($file = readdir($handle))) {  if ( is_file($dir.$file) ){  if (preg_match("'\.(avi)$'",

PHP中使用php5-ffmpeg撷取视频图片实例

前几天在玩 FFmpeg 的时后,突然发现 Ubuntu 上多了 php5-ffmpeg 这个扩充套件,就想来玩玩看,看好不好用,有两个结论: 读取影片取决于 FFmpeg 的支援性,如果想要什么格式都支援的话,建议自己重新编译 FFmpeg. 效率并没有我想像中的快,两分钟的影片取十张图,大约 30 秒. 安装方法: 复制代码 代码如下: sudo apt-get install ffmpeg php5-ffmpeg php5-gd 撷图测试范例: 复制代码 代码如下: <?php    $p

php使用ffmpeg向视频中添加文字字幕的实现方法

这篇文章主要介绍了PHP使用ffmpeg给视频增加字幕显示的方法,实例分析了php操作ffmpeg给视频增加字母的技巧,具有一定参考借鉴价值,需要的朋友可以参考下. 本文实例讲述了PHP使用ffmpeg给视频增加字幕显示的方法.分享给大家供大家参考.具体实现方法如下: <?php $dir = './'; // set to current folder if ($handle = opendir($dir)) { while(false!== ($file = readdir($handle)

PHP基于ffmpeg实现转换视频,截图及生成缩略图的方法

本文实例讲述了PHP基于ffmpeg实现转换视频,截图及生成缩略图的方法.分享给大家供大家参考,具体如下: 这里把ffmpeg 和  生成缩略图整合了一下: include("ImageResize.class.php") //转视频 $cmd="ffmpeg.exe -i starwar.avi -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 1.flv"; exec($cmd); //视频截图 $cmd="ffmpeg

java调用ffmpeg实现转换视频

最近由于项目需要把不同格式的视频转换为ts流,故研究了一下ffmpeg.在网上找了很多资料,主要参考了Java+Windows+ffmpeg实现视频转换功能. 期间也加了几个qq群,咨询了各大高手,其中在代码中关于ffmpeg的命令就是来自其中一个qq群里面的大神. 下载相关文件 ffmpeg地址,我下载是windows 64位static版本. xuggler下载地址 下面的代码我上传到了github,需要的可以下载下来看看. 步骤: 1.研究java如何调用外部程序 2.研究ffmpeg转换

android 获取视频第一帧作为缩略图的方法

今天,简单讲讲android里如何获取一个视频文件的第一帧作为缩略图显示在界面上. 之前,我说个最近需要从服务器下载视频文件,但是下载后肯定需要显示视频的缩略图在界面上给用户看,于是想到显示视频的第一帧作为缩略图.但是我不知道具体怎么写,于是在网上查找资料,最终是解决了问题.这里记录一下. 一.使用MediaMetadataRetriever获取视频的第一帧作为缩略图 /** * 获取视频文件截图 * * @param path 视频文件的路径 * @return Bitmap 返回获取的Bit

基于PHP服务端图片生成缩略图的方法详解

复制代码 代码如下: <?php//定义缩略图片尺寸$picSize = array(              '100_100'=> 1,              '200_100'=> 1           );$imagePath = "../image/";function parseUrl($url){   preg_match("/(?P<name>[\w\d]+)_w(?P<width>\d+)_h(?P<h

C#实现通过ffmpeg从flv视频文件中截图的方法

本文实例讲述了C#实现通过ffmpeg从flv视频文件中截图的方法.分享给大家供大家参考.具体分析如下: 需要先下载ffmpeg,这是开源的,代码如下所示: 复制代码 代码如下: using System; using System.Configuration; public class PublicMethod:System.Web.UI.Page {     public PublicMethod()     {     }     //文件路径     public static stri

详解java调用ffmpeg转换视频格式为flv

详解java调用ffmpeg转换视频格式为flv 注意:下面的程序是在Linux下运行的,如果在windows下rmvb转换成avi会出现问题,想成功需要下载下个drv43260.dll东西放到C:WindowsSystem32下面 这几天在写一个视频管理系统,遇到一个很大的问题就是如果把不同格式转换为flv,格式!经过网上的一番搜索,自己在总结,整理,整理,终于整出来了!实现了视频进行转换的同时还能够进行视频截图和删除原文件的功能! 格式转换主要原理就是先用java调用ffmpeg的exe文件

PHP调用ffmpeg对视频截图并拼接脚本

PHP脚本调用ffmpeg对视频截图并拼接,供大家参考,具体内容如下 目前支持MKV,MPG,MP4等常见格式的视频,其他格式有待测试 12P 一张截图平均生成时间  1.64s     100个视频,大概需要2分半左右 9P  一张截图平均生成时间  1.13s      100个视频,大概需要2分钟左右 6P  一张截图平均生成时间  0.86s      100个视频,大概需要1分半左右 3P  一张截图平均生成时间  0.54s      100个视频,大概需要1分钟左右 <?php d

python调用系统ffmpeg实现视频截图、http发送

python 调用系统ffmpeg进行视频截图,并进行图片http发送ffmpeg ,视频.图片的各种处理. 最近在做视频.图片的版权等深度学习识别,用到了ffmpeg部分功能,功能如下:  调用ffmpeg 对不同目录视频进行截图,通过http发送到后台进行算法识别.  每5分钟扫描最近的视频,生成图片,发送完毕图片删除. 代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- """'定时任务每五分钟发送上一个5分钟视频 目

利用Ffmpeg获得flv视频缩略图和视频时间的代码

问题描述:获得flv视频的缩略图和视频时间长度 谷歌了半天发现可以使用Ffmpeg获得视频的一些信息,先介绍一下FFMEPG 这里简单说一下:FFmpeg是用于录制.转换和流化音频和视频的完整解决方案,一套领先的音/视频编解码类库.官方正式版ffmpeg不支持rmvb和rm格式. 不过有很多解决方法 FFmpeg的官方网址是 http://ffmpeg.mplayerhq.hu/ . 中文Wiki是 http://www.ffmpeg.com.cn/ ,资料很多. ㈠安装FFMEPG 操作系统: