php 利用 passthru函數 來執行 ffmpeg 進行轉檔

之前已於 CentOS 中安裝 ffmpeg 及 php-ffmpeg 並且也能使用 bash shell 指令成功執行 avi 轉檔,接下來就來嘗試著利用 php 來執行 shell 並讓 ffmpeg 轉檔,首先會想到 php exec() 函數,但該函數無法執行 ffmpeg,因此改用 php 的 passthru() 函數指令來執行 ffmpeg,因為目前僅是測試用故在 web 的根目錄改權限為 777 讓這個網頁能執行寫入的動作,我們利用2>&1 做重新導向的輸出,讓網頁上能顯示轉檔進度。

程式範例如下:
<?php
  header("video/x-avo");
  passthru('/usr/bin/ffmpeg -i /var/www/html/Woodstock_Festival_Trailer.avi -vcodec libx264 /var/www/html/Woodstock_Festival_Trailer-H264.avi 2>&1');
?>

假如沒意外應該會出現如下圖


於 centos 主機上查看目錄會發現到已轉檔成功,而且擁有者為 apache 而非 root,因為我們是透過執行網頁的方式來轉檔。

請參考:CentOS 安裝 ffmpeg 及 php-ffmpeg

留言

這個網誌中的熱門文章

c語言-關於#define用法

CMD常用網管指令

PHP 與 JavaScript 之間傳值利用 json