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
程式範例如下:
<?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
留言
張貼留言