分享下 PHP 使用 getID3 來獲取音訊、影片等媒體檔案相關資訊

reggie發表於2020-02-27

起因

最近在家辦公中,碰到需要處理一些影片檔案的操作,公司一直使用的某雲端儲存,處理圖片的介面倒是挺多,但是影片類的一些處理就需要開通另外的服務了,搗鼓了一圈子還是決定自己處理給公司省點錢吧。

PHP在本地處理影片等媒體檔案的時候一般都是藉助了 『ffmpeg』,但是程式碼有點太老,擴充套件安裝又出了么蛾子,搞了一下午好累。

後面發現還有 getID3 也可以用來處理相關媒體檔案資訊,這是一個PHP指令碼,只需要簡單引入專案即可,不需要安裝額外的擴充套件或者工具。但是問題又來了,國外的下載速度死慢,1.4M的東西下載了1個多小時哭死我。

期間找了下發現都是 C*DN 的資源而且都要積分(作為一名常年白嫖黨,怎麼可能會有這東西),廣告滿天飛不說,而且越來越不像個技術社群,真的是好討厭。

為了幫助更多有需要的人可以使用還是來我們社群分享吧!

下載

getID3官方地址

Github下載地址

SourceForge下載地址

騰訊雲下載地址

備用下載地址

使用

因為這不是一個標準的符合 PSR-4 規範的包(沒有名稱空間,類名也不咋地沒細看),如果在專案要使用的話直接新增整個資料夾,然後引入 getid3/getid3.php 即可。如果是在 Laravel 中可以這樣引入。

  • 解壓檔案,把資料夾放到專案下,我是放到了 vendor 下(包裡有很多無用的檔案都可以刪除)
  • 編輯 composer.json 檔案
  • 找到 autoload 在其下面的 files 陣列中追加引入
    "vendor/getID3/getid3/getid3.php",
    "vendor/getID3/getid3/getid3.lib.php"
  • 然後執行 composer dump-autoload
  • 最後在需要使用的地方引入即可

下面是一個demo

$path = storage_path('uploads/60EB4401-33A3-27AE-F03E-B54E7282CB5F.mp4');
$mediaTool = new \getID3();
$mediaInfo = $mediaTool->analyze($path);
dd($mediaInfo);

裡面會有很多的屬性,看自己的需要來取吧。比如其中的 playtime_seconds 就是媒體的時長。

最後

其實上面這些都是被逼無奈,終歸屬於“野路子”處理。反正現在大家都是存雲服務,花點錢應該的畢竟人家的服務確實也可以嘛,而且省事什麼轉碼,水印,自動識別之類功能齊全。最後吐槽下最近在家公辦真的變成996了,連蹲個坑都得隨時待命,不能離開10分鐘不回訊息,希望疫情早日過去吧,祝願大家都能健康平安!

本作品採用《CC 協議》,轉載必須註明作者和本文連結
微信公眾號:碼咚沒 ( ID: codingdongmei )

相關文章