1. 程式人生 > >ffmreg thinkphp 控制器 獲取音訊視訊詳細資訊(獲取時長)

ffmreg thinkphp 控制器 獲取音訊視訊詳細資訊(獲取時長)

原文地址:https://blog.csdn.net/XueDing_/article/details/86139665

在thinkphp控制器裡面獲取頁面提交過來的音訊連結進行獲取時長

第一步安裝ffmpeg

  1. FFmpeg下載:http://ffmpeg.zeranoe.com/builds/。
  2. 下載並解壓FFmpeg資料夾。
  3. 開啟你想安裝的任意磁碟,例如:d盤。新建一個名為“ffmpeg”的資料夾,將第二步解壓生成的資料夾中的內容全部拷貝到“ffmpeg”資料夾中。
  4. 設定環境變數,右鍵點選“我的電腦->屬性”,然後點選“高階系統設定”,跳出“系統屬性”視窗後,最後點選“環境變數”按鈕,點選“環境變數”按鈕後,跳出“環境變數”視窗,找到並選中“Path”變數,點選編輯。在“Path”變數原有變數值內容上加上“;d:\ffmpeg\bin”(注:;代表間隔,不可遺漏;d:\ffmpeg\bin代表FFmpeg的安裝路徑下的bin資料夾),一路點選“確定”即可。
  5. 開啟命令提示符視窗。輸入命令“ffmpeg –version”。如果命令提示視窗返回FFmpeg的版本資訊,那麼就說明安裝成功了,你可以在命令提示行中任意資料夾下執行FFmpeg。
$file_name = '後弦 - 下完這場雨 (鈴聲).mp3';
$arr = $this->getInfo($file_name);//返回音訊的資訊
$time_long = gmdate('H:i:s', $arr['seconds']);
 
/**
 * 獲取檔案資訊
 * @access public
 * @param  file      $file     檔案路徑
 * @return array
 */
 
function getInfo($file)
{
    $command = sprintf('D:/ffmpeg/bin/ffmpeg -i "%s" 2>&1', $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;
}