摘要:原文鏈接獲取視頻播放時(shí)長(zhǎng)今天做一個(gè)視頻管理系統(tǒng)的時(shí)候,客戶要求一個(gè)視頻截取張縮略圖。那么就涉及到如何去獲取視頻長(zhǎng)度的問(wèn)題。查找相關(guān)資料,最終封裝了如下方法,不僅可以獲取視頻時(shí)長(zhǎng),還可以獲取分辨率編碼比特率等信息。
原文鏈接:http://www.fire-rain.com/blog/FFMPEG_VIDEO_TIME
FFMPEG獲取視頻播放時(shí)長(zhǎng)今天做一個(gè)視頻管理系統(tǒng)的時(shí)候,客戶要求一個(gè)視頻截取20張縮略圖。并且按照視頻長(zhǎng)度截取20個(gè)不同時(shí)間點(diǎn)。那么就涉及到如何去獲取視頻長(zhǎng)度的問(wèn)題。查找相關(guān)資料,最終封裝了如下方法,不僅可以獲取視頻時(shí)長(zhǎng),還可以獲取分辨率、編碼、比特率等信息。
調(diào)用示例&1", $file)); $info = ob_get_contents(); ob_end_clean(); // 通過(guò)使用輸出緩沖,獲取到ffmpeg所有輸出的內(nèi)容。 $ret = array(); // Duration: 01:24:12.73, start: 0.000000, bitrate: 456 kb/s if (preg_match("/Duration: (.*?), start: (.*?), bitrate: (d*) kb/s/", $info, $match)) { $ret["duration"] = $match[1]; // 提取出播放時(shí)間 $da = explode(":", $match[1]); $ret["seconds"] = $da[0] * 3600 + $da[1] * 60 + $da[2]; // 轉(zhuǎn)換為秒 $ret["start"] = $match[2]; // 開(kāi)始時(shí)間 $ret["bitrate"] = $match[3]; // bitrate 碼率 單位 kb } // Stream #0.1: Video: rv40, yuv420p, 512x384, 355 kb/s, 12.05 fps, 12 tbr, 1k tbn, 12 tbc if (preg_match("/Video: (.*?), (.*?), (.*?)[,s]/", $info, $match)) { $ret["vcodec"] = $match[1]; // 編碼格式 $ret["vformat"] = $match[2]; // 視頻格式 $ret["resolution"] = $match[3]; // 分辨率 $a = explode("x", $match[3]); $ret["width"] = $a[0]; $ret["height"] = $a[1]; } // Stream #0.0: Audio: cook, 44100 Hz, stereo, s16, 96 kb/s if (preg_match("/Audio: (w*), (d*) Hz/", $info, $match)) { $ret["acodec"] = $match[1]; // 音頻編碼 $ret["asamplerate"] = $match[2]; // 音頻采樣頻率 } if (isset($ret["seconds"]) && isset($ret["start"])) { $ret["play_time"] = $ret["seconds"] + $ret["start"]; // 實(shí)際播放時(shí)間 } $ret["size"] = filesize($file); // 文件大小 return $ret; } // 調(diào)用方法: print_r( video_info("test.mp4","ffmpeg.exe"));
返回結(jié)果
Array ( [duration] => 00:00:30.13 [seconds] => 30.13 [start] => 0.036281 [bitrate] => 5495 [vcodec] => h264 (High) (avc1 / 0x31637661) [vformat] => yuv420p [resolution] => 1280x720 [width] => 1280 [height] => 720 [play_time] => 30.166281 [size] => 20695855 )
注意需要在php.ini文件上把passthru函數(shù)的權(quán)限打開(kāi),否則會(huì)報(bào)錯(cuò)!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/20839.html
摘要:背景因?yàn)楣ぷ髦杏胁糠謨?nèi)容是使用來(lái)獲取音視頻信息以及對(duì)音視頻文件進(jìn)行處理,遇到了一些問(wèn)題,所以一路搜過(guò)來(lái)。因?yàn)橐曨l處理必然離不開(kāi),網(wǎng)上抄了一段是領(lǐng)先的多媒體框架。 背景: 因?yàn)楣ぷ髦杏胁糠謨?nèi)容是使用PHP來(lái)獲取音/視頻信息以及對(duì)音視頻文件進(jìn)行處理,遇到了一些問(wèn)題,所以一路搜過(guò)來(lái)。 FFmpeg 因?yàn)橐曨l處理必然離不開(kāi)FFmpeg,網(wǎng)上抄了一段: FFmpeg是領(lǐng)先的多媒體框架。 在這個(gè)框...
摘要:之前我們介紹了在線短視頻秒播優(yōu)化的方方面面,從服務(wù)器,部署接入,數(shù)據(jù)連接獲取,客戶端緩存,出幀策略,到視頻文件幀位置等。并不是文件必須的部分,但在我們常見(jiàn)的可在線播放的格式文件中例如中的文件確是重中之重。 showImg(https://segmentfault.com/img/bV0wbG?w=826&h=358);之前我們介紹了在線短視頻秒播優(yōu)化的方方面面,從服務(wù)器,cdn部署接入...
閱讀 1591·2021-11-23 10:01
閱讀 2978·2021-11-19 09:40
閱讀 3228·2021-10-18 13:24
閱讀 3482·2019-08-29 14:20
閱讀 2989·2019-08-26 13:39
閱讀 1282·2019-08-26 11:56
閱讀 2678·2019-08-23 18:03
閱讀 384·2019-08-23 15:35