使用ffmepg对流进行抓取图片

使用ffmepg对流进行抓取图片

在linux上安装ffmepg

	尽量不要在官网下载原始包,因为需要编译
wget http://www.ffmpeg.org/releases/ffmpeg-3.1.tar.gz
tar -zxvf ffmpeg-3.1.tar.gz 

进入解压后目录,自己指定的安装目录,然后配置环境变量,因为后续我们需要在java中使用命令进行截图

vi /etc/profile
按下i进行输入状态
在最后PATH添加环境变量:
export PATH=$PATH:/usr/local/ffmpeg/bin
按下esc并:wq
保存退出
查看是否生效
source /ect/profile  设置生效

然后可以使用流地址进行测试是否可以抓图,命令如下:

ffmpeg -i "+ VedioUrl +" -vframes 1 -y -f image2 -t 1 -s " + size  + " " + realPath

其中VedioUrl 为流地址 size为图片大小(长和宽) realPath为截取过后的存储地址

有图片即成功

java具体实现

service层

 /**
     * 抓取图片
     *
     */
    public String capture(String VedioUrl,Integer height,Integer width,String path) {
        String realPath =  path+UUID.randomUUID().toString() + ".jpeg";

        String size = height+"x"+width; // 600x480

        String command ="ffmpeg -i "+ VedioUrl +" -vframes 1 -y -f image2 -t 1 -s " + size  + " " + realPath;
        log.info("截图命令调用"+command);
        try {
            Process process = Runtime.getRuntime().exec(command);

            //以下代码无意义,为了判定当前有无数据,如果没有就抛出异常
            InputStreamReader ir = new InputStreamReader(process.getInputStream());
            LineNumberReader input = new LineNumberReader(ir);
            String line;
            while ((line = input.readLine()) != null) {
            }
        } catch (java.io.IOException e) {

        }
        return realPath;
    }

拿到返回路径可以进行上传等操作啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值