PHP利用FFmpeg读取视频播放时长和码率等信息

代码如下:

<?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 = ob_get_contents();
    ob_end_clean();
    
    $data = array();
    if (preg_match("/Duration: (.*?), start: (.*?), bitrate: (\d*) kb\/s/", $info, $match)) {
        $data['duration'] = $match[1]; //播放时间
        $arr_duration = explode(':', $match[1]);
        $data['seconds'] = $arr_duration[0] * 3600 + $arr_duration[1] * 60 + $arr_duration[2]; //转换播放时间为秒数
        $data['start'] = $match[2]; //开始时间
        $data['bitrate'] = $match[3]; //码率(kb)
    }
    if (preg_match("/Video: (.*?), (.*?), (.*?)[,\s]/", $info, $match)) {
        $data['vcodec'] = $match[1]; //视频编码格式
        $data['vformat'] = $match[2]; //视频格式
        $data['resolution'] = $match[3]; //视频分辨率
        $arr_resolution = explode('x', $match[3]);
        $data['width'] = $arr_resolution[0];
        $data['height'] = $arr_resolution[1];
    }
    if (preg_match("/Audio: (\w*), (\d*) Hz/", $info, $match)) {
        $data['acodec'] = $match[1]; //音频编码
        $data['asamplerate'] = $match[2]; //音频采样频率
    }
    if (isset($data['seconds']) && isset($data['start'])) {
        $data['play_time'] = $data['seconds'] + $data['start']; //实际播放时间
    }
    $data['size'] = filesize($file); //文件大小
    return $data;
}

//用法
$video_info = getVideoInfo('video.mp4');
print_r($video_info);
?>

本例中,会用到passthru,可能部分虚拟主机会将此命令禁用。

在Linux中部署FFmpeg开源视频压缩环境过程简单笔记

下面是在Linux中部署FFmpeg和相关类库全过程的简单记录,如下:

编译安装yasm

tar zxvf ./yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make
make install

编译安装x264

tar xvfj ./x264.tar.bz2
cd x264
./configure --enable-shared
make
make install

编译安装lame

tar zxvf ./lame-3.99.5.tar.gz
cd lame-3.99.5
./configure --enable-shared
make && make install

编译安装libogg

tar zxvf ./libogg-1.3.2.tar.gz
cd libogg-1.3.2
./configure --enable-shared
make && make install

编译安装libvorbis

tar zxvf ./libvorbis-1.3.4.tar.gz
cd libvorbis-1.3.4
./configure
make && make install

编译安装faac

tar zxvf ./faac-1.28.tar.gz
cd faac-1.28
./configure
make && make install

编译安装ffmpeg

tar xvfj ./ffmpeg-2.5.1.tar.bz2
cd ffmpeg-2.5.1
./configure --prefix=/usr/local/ffmpeg2 --enable-libmp3lame --enable-libvorbis --enable-gpl --enable-version3 --enable-nonfree --enable-pthreads --enable-libfaac --enable-libx264 --enable-postproc --enable-ffserver --enable-ffplay
make && make install

# 继续编译 qt-faststart
./configure
make tools/qt-faststart
cp -a tools/qt-faststart /usr/bin/

将libx264写进ldconfig

locate libx264.so.142 #会显示/usr/local/lib/libx264.so.142
ln -s libx264.so.142 libx264.so
vi /etc/ld.so.conf.d/libx264.conf #写入/usr/local/lib
ldconfig

阳光部落原创,更多内容请访问 http://www.sunbloger.com/