【备忘】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

 

 

 

 

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