【備忘】Ubuntu安裝ffmpeg及使用記錄

[完結]

在百度找了很多安裝方式,都不行。意外之中找到了官網:https://ffmpeg.org/ 。在這裏可以下載各種版本、各種平臺的包。但是我沒用上。

下面介紹我的操作:

1、安裝:

安裝時參考了一遍文章:https://www.linuxidc.com/Linux/2019-08/160266.htm

介紹的是如何安裝4.2版本,由於沒有安裝過,所以版本號無所謂只要能用起來就行。

輸入安裝命令:sudo add-apt-repository ppa:jonathonf/ffmpeg-4

安裝的時候報錯:ubuntu add-apt-repository command not found

解決方法:

Launchpad PPA Repositories是很有用的非ubuntu官方的第三方個人資源庫,可以很方便地安裝第三方軟件。
但是在運行add-apt-repository命令時,有時會提示命令不存在,這個時候直接apt-get add-apt-repository是不可以的!
解決的方法是安裝software-properties-common。輸入命令:

apt-get install software-properties-common

 根據提示操作即可。

2、正式嘗試安裝ffmpeg擴展

 輸入命令安裝:sudo add-apt-repository ppa:jonathonf/ffmpeg-4

 

 3、查看版本

輸入命令:ffmpeg -version

4、如何恢復(此步驟未測試):

無論出於何種原因,您可以通過以下命令清除PPA,將FFmpeg降級到Ubuntu Universe存儲庫中的庫存版本:

linuxidc@linuxidc:~/www.linuxidc.com$ sudo apt-get install ppa-purge && sudo ppa-purge ppa:jonathonf/ffmpeg-4

5、簡單使用(此步驟未測試):

 參考上面文章鏈接。

6、獲取第一幀

我這裏需要的是獲取視頻第一幀作爲圖片保存下來。

開始編輯測試代碼:


        //待處理視頻路徑   /var/www/html/public/static/upload/file/0_6462e42afd0743d7b4ebabc8383077cbAdminist_1591013034.mp4
        $in_file =      "/var/www/html/public/static/upload/file/0_6462e42afd0743d7b4ebabc8383077cbAdminist_1591013034.mp4";
        //縮略圖保存路徑
        $out_file =  '/var/www/html/runtime/wh_ffmpeg.jpg';
        //要執行的 cmd 命令
        $cmd =  "ffmpeg -i ".$in_file." -y -f image2 -ss 2 -t 0.001 -s 350x240 ".$out_file;
        $cmd = iconv('UTF-8','GB2312',$cmd);
        //執行命令
        $res = exec($cmd.' 2>&1');

        dump($res);

輸出:

string(95) "video:10kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown"

查看、或者自己下載下來在本地看

我是下載在本地看的。

到這裏已經可以生成圖片了,但是,還不是我要的效果!

我的進階需求:

生成原視頻寬高(等比例)圖片。

繼續研究。。。。。。

//輸入的視頻格式  mov,mp4,m4a,3gp,3g2,mj2

研究出來了,下面直接上代碼:

    /**
     * desc:生成視頻封面
     * 讀取視頻第一幀保存爲圖片
     * author:
     * @param $in_file 待處理視頻路徑
     * @param $out_file_name 縮略圖文件名稱
     * @return string
     */
    function createVideoImg($in_file, $out_file_name, $path=''){
        //縮略圖保存路徑
        $path = $path?$path:'/static/upload/file/';
        $out_file = config('app.ROOT_PATH_PRO').'public'.$path;

        if(!file_exists($out_file)){
            mkdir($out_file, 0777, true);
        }
        $out_file_path = $out_file.$out_file_name;
        //要執行的 cmd 命令
        //$cmd =  "ffmpeg -i ".$in_file." -y -f image2 -ss 2 -t 0.001 -s 350x240 ".$out_file;
        $cmd = "ffmpeg -i {$in_file} -f image2 -ss 2 -t 0.001 {$out_file_path}";
        $cmd = iconv('UTF-8','GB2312',$cmd);
        //執行命令
        exec($cmd);
        return $path.$out_file_name;
    }

返回的結果是不含域名的文件訪問路徑,加上域名即可訪問。

ok,終於搞定。

 

繼續擼碼。。。。。。

 

END

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章