ffmreg thinkphp 控制器 獲取音訊視訊詳細資訊(獲取時長)
阿新 • • 發佈:2019-01-10
原文地址:https://blog.csdn.net/XueDing_/article/details/86139665
在thinkphp控制器裡面獲取頁面提交過來的音訊連結進行獲取時長
第一步安裝ffmpeg
- FFmpeg下載:http://ffmpeg.zeranoe.com/builds/。
- 下載並解壓FFmpeg資料夾。
- 開啟你想安裝的任意磁碟,例如:d盤。新建一個名為“ffmpeg”的資料夾,將第二步解壓生成的資料夾中的內容全部拷貝到“ffmpeg”資料夾中。
- 設定環境變數,右鍵點選“我的電腦->屬性”,然後點選“高階系統設定”,跳出“系統屬性”視窗後,最後點選“環境變數”按鈕,點選“環境變數”按鈕後,跳出“環境變數”視窗,找到並選中“Path”變數,點選編輯。在“Path”變數原有變數值內容上加上“;d:\ffmpeg\bin”(注:;代表間隔,不可遺漏;d:\ffmpeg\bin代表FFmpeg的安裝路徑下的bin資料夾),一路點選“確定”即可。
- 開啟命令提示符視窗。輸入命令“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; }