接到朋友的需求,朋友是做php的,让我帮忙处理php生成gif的需求。他的项目类似抖音短视频那种,就是展示出来的界面是gif动图,然后点进去是完整的视频。

我想了想,我倒是没做过php生成gif的需求啊。但是python能做啊,满打满算,核心代码几行就能搞定了。那我为何我不给他写个外挂程序呢

这里用到了moviepy 这个包。

1.安装moviepy:

  pip install moviepy

2.写程序开始。

  在他的服务器上我很快就配好了python 和 pip的环境。

  

#!usr/bin/env python
#-*- coding:utf-8 _*-
"""
@author:Hurrican
@file: gif.py
@time: 2019/06/22 21:33 """
import sys
import moviepy.editor as mpy imge_url=sys.argv[1]
if imge_url !='': '''处理路径start'''
piece = imge_url.split('/')[-2:]
path = '/'.join(piece)
path = path.replace('.mp4','.gif') dirname = '/usr/share/nginx/html/KY/data/upload/'+path
'''处理路径end'''
try:
#视频文件的本地路径
content = mpy.VideoFileClip(imge_url)
# 剪辑0分0秒到0分1秒的片段。注意:不使用resize则不会修改清晰度
c1 = content.subclip((0,0),(0,1)).resize((480,320))
c1.write_gif(dirname)
except Exception as e:
print(e) else:
print('系统错误')

  上面是我写的python 代码。

大家可能注意到了。,sys.argv[1],其实这个是我从php传过来的参数。

给你们拓展下:

引入 sys模块。sy.argv[1]就到表从php传过来的第一个参数

下面是php代码,我截取片段,

php代码

<?php

// +----------------------------------------------------------------------
// | YFCMF [ WE CAN DO IT MORE SIMPLE ]
// +----------------------------------------------------------------------
// | Copyright (c) 2015-2016 http://www.rainfer.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: rainfer <81818832@qq.com>
// +----------------------------------------------------------------------
namespace app\home\controller; use think\Cache;
use think\Db;
use think\captcha\Captcha;
class Index extends Base {
public function index() {
set_time_limit(0); $news = DB::name('news')->order("news_time asc")->field('n_id,news_title,news_time,news_content,news_hits,member_list_id,news_hits,zan_num')->select();
$data = [
'news' => $news,
];
#########################################################外挂开始##########################################################
foreach ($data['news'] as $key => $value) {
# code...
$img_url = $value['news_content']; if($img_url!=''){
$order = "python ".getcwd()."/app/home/controller/gif.py {$img_url}"; $data = shell_exec($order);
var_dump($data);
// // $result = exec('/usr/bin/python /usr/share/nginx/html/KY/app/home/controller/gif.py {$img_url}');
// #写日志文件
file_put_contents(dirname(__FILE__).'/log.txt', $data.'\r\n',FILE_APPEND);
} }

#########################################################外挂结束##########################################################

// echo '<pre>';
// print_r($data);die;
return $this->view->fetch(':index');
}


  

中间标识的外挂就是我将php与pyhon交互的代码。

这里我用到了 php的shell_exec 函数,之所以不用exec是因为它只能返回一行结果。而shell_exec可以返回全部结果。 getcwd()是php的一个函数,标识返回当前工作目录

python 双引号里面记得还要留个空格哦。然后可以打印出结果。然后在php项目里面加个日志文件就行了。

成功后,我们来看看日志文件长什么样:

下面是工作目录。本次采用YFCMF的TP框架。但是一定要注意要给777 权限(644好像不行,测试失败了),不然写不了日志文件。

视频剪辑生成gif格式(php外挂python程序)完美!的更多相关文章

  1. Python生成文本格式的excel\xlwt生成文本格式的excel\Python设置excel单元格格式为文本\Python excel xlwt 文本格式

    Python生成文本格式的excel\xlwt生成文本格式的excel\Python设置excel单元格格式为文本\Python excel xlwt 文本格式 解决: xlwt 中设置单元格样式主要 ...

  2. 一个挺好用的生成GIF格式图片的小程序

    import os import re import imageio pic_list = os.listdir() pic_type = ['png', 'jpg', 'jpeg', 'bmp'] ...

  3. Scrum立会报告+燃尽图(十二月九日总第四十次):视频剪辑与用户反馈

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2484 项目地址:https://git.coding.net/zhang ...

  4. Python音视频剪辑库MoviePy1.0.3中文教程导览及可执行工具下载

    ☞ ░ 前往老猿Python博文目录 ░ 一.简介 MoviePy是一个用于视频编辑的Python模块,可用于进行视频的基本操作(如剪切.拼接.标题插入).视频合成(也称非线性编辑).视频处理或创建高 ...

  5. 视频剪辑什么鬼?Python 带你高效创作短视频

    ​阅读文本大概需要 10 分钟. 近两年,抖音.快手将短视频推到风口浪尖上,要生产出高质量的视频,离不开视频剪辑这一环节:在全民剪片浪潮中,大众使用最多的剪辑软件如:Pr.FCPX.剪印.Vue 等. ...

  6. python也能玩视频剪辑!moviepy操作记录总结

    前几篇文章咱们介绍了一下图片的处理方式,今天咱们说说视频的处理.python能够支持视频的处理么?当然是肯定的,人生苦读,我用python.万物皆可python. moviepy库安装 今天咱们需要使 ...

  7. python 生成json格式文件,并存储到手机上

    上代码 #!/usr/bin/env python # -*- encoding: utf-8 -*- import json import os import random "" ...

  8. Python MoviePy中文教程导览及可执行音视频剪辑工具下载

    ☞ ░ 前往老猿Python博文目录 ░ <Python音视频剪辑库MoviePy1.0.3中文教程导览及可执行工具下载>是老猿两个关于moviepy的专栏<PyQt+moviepy ...

  9. moviepy音视频剪辑:AudioClip帧处理时报TypeError: only size-1 arrays can be converted to Python scalar错

    ☞ ░ 前往老猿Python博文目录 ░ 一.环境 操作系统:win7 64位 moviepy:1.0.3 numpy:1.19.0 Python:3.7.2 二.应用代码及报错信息 程序代码 if ...

随机推荐

  1. 99_leetcode_Best Time to Buy and sell Stock

    Say you have an array for which the ith element is the price of a given stock on day i. If you were ...

  2. @Override用在哪儿

            帮朋友改一段代码,看到好多红叉都是指向@Override.         是这样,他代码里写了一个接口.方法都用抽象函数声明在接口类里.然后在继承自这个接口的实现类里写详细方法的空壳 ...

  3. Ubuntu新版中javascript-common.conf害死人啊

    自动把javascript目录映射到系统的/usr/share 下面了,删掉对应的软链接再重启就好了

  4. Linux/Android——Input系统之InputMapper 处理 (八)【转】

    本文转载自:http://blog.csdn.net/jscese/article/details/43561773 前文Linux/Android——Input系统之InputReader (七)介 ...

  5. UVA 315 求连通图里的割点

    http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=20837 哎 大白书里求割点的模板不好用啊,许多细节理解起来也好烦..还好找了 ...

  6. POJ1228 Grandpa's Estate 稳定凸包

    POJ1228 转自http://www.cnblogs.com/xdruid/archive/2012/06/20/2555536.html   这道题算是很好的一道凸包的题吧,做完后会加深对凸包的 ...

  7. RDA Kconfig介绍 ***

    安装显示库: sudo apt-get install libncurses5-dev libncursesw5-dev 执行相关文件: 1.radisson.Kconfig 2.gen_radiss ...

  8. 【167】IDL 中相关技巧

    IDL 中相关技巧 1. 注释:分号“;”表示注释内容的开始. 2. 续行:最后一个字符是“$”,那么本行将紧接着下一行,续行标志.(换行符,$+回车) 3. 中文编码:窗口>首选项>常规 ...

  9. IntelliJ IDEA Tomcat配置

    解决方法: 下载地址:http://archive.apache.org/dist/tomcat/tomcat-connectors/native

  10. 6章 Models

    传统的MVC结构中,有模型这么一个概念.Django中,Models又是怎么一回事呢? 刚才生成的这些乱七八糟的数据迁移就是Django自带的一些应用 INSTALLED_APPS = [ 'djan ...