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

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

这里用到了moviepy 这个包。

1.安装moviepy:

  pip install moviepy

2.写程序开始。

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

  

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

  上面是我写的python 代码。

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

给你们拓展下:

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

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

php代码

  1. <?php
  2.  
  3. // +----------------------------------------------------------------------
  4. // | YFCMF [ WE CAN DO IT MORE SIMPLE ]
  5. // +----------------------------------------------------------------------
  6. // | Copyright (c) 2015-2016 http://www.rainfer.cn All rights reserved.
  7. // +----------------------------------------------------------------------
  8. // | Author: rainfer <81818832@qq.com>
  9. // +----------------------------------------------------------------------
  10. namespace app\home\controller;
  11.  
  12. use think\Cache;
  13. use think\Db;
  14. use think\captcha\Captcha;
  15. class Index extends Base {
  16. public function index() {
  17. set_time_limit(0);
  18.  
  19. $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();
  20. $data = [
  21. 'news' => $news,
  22. ];
  23. #########################################################外挂开始##########################################################
  24. foreach ($data['news'] as $key => $value) {
  25. # code...
  26. $img_url = $value['news_content'];
  27.  
  28. if($img_url!=''){
  29. $order = "python ".getcwd()."/app/home/controller/gif.py {$img_url}";
  30.  
  31. $data = shell_exec($order);
  32. var_dump($data);
  33. // // $result = exec('/usr/bin/python /usr/share/nginx/html/KY/app/home/controller/gif.py {$img_url}');
  34. // #写日志文件
  35. file_put_contents(dirname(__FILE__).'/log.txt', $data.'\r\n',FILE_APPEND);
  36. }
  37.  
  38. }

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

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

  1.  

  

中间标识的外挂就是我将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. PHP博客项目-gai

    XX科技还是米有电话过来,看样子真的是黄了.这段时间都没有好好学习,经历了两次稀里糊涂的面试,特别是第二次,让我感觉自己之前学的东西都已经忘了,本来就学的不多,也不扎实,还一忘...看了是真的要开始着 ...

  2. 关于The hierarchy of the type TestBeforeAdvice is inconsistent的问题

    今天准备写一个spring aop的demo,创建了TestBeforeAdvice类,该类实现了MethodBeforeAdvice接口,eclipse报了"The hierarchy o ...

  3. YTU 2508: 武功秘籍

    2508: 武功秘籍 时间限制: 1 Sec  内存限制: 128 MB 提交: 1384  解决: 438 题目描述 小明到X山洞探险,捡到一本有破损的武功秘籍(2000多页!当然是伪造的).  他 ...

  4. SQLALchemy之创建表,删除表

    1.创建引擎 "数据库+第三方模块://用户名:密码@数据库服务端IP:端口号/数据库名?编码" engine = create_engine( "mysql+pymys ...

  5. 高效开发之写demo

    今天花了不少时间排查发现了几个明显的错误,但是相关开发人员就是没发现,自己改了一个流程影响到了其它的.最后解决问题的关键还是通过demo找到问题原因进而解决的. 这让我再次感觉到demo的重要性,以前 ...

  6. 3-1 vue生存指南 - todolist实现-数据渲染

    由于Vue.js作者是中国人,会说汉语,所以国内生态会更好一点.Vue.js作者是尤雨溪,

  7. Ueditor 单独使用上传图片及上传附件方法

    1 <script type="text/plain" id="upload_ue"></script> 2 <script ty ...

  8. 近年来火热的人工智能,其实是IT业界的一个障眼法

    近年来火热的人工智能,其实是IT业界的一个障眼法,仗着现在的计算机的计算能力牛B,把一个类仿生统计算法,宣传成了人工智能,不得不感叹一些营销人士的牛逼,说大话不腰疼.当然谎言重复一千遍也许自己也就信了 ...

  9. bzoj 2726: [SDOI2012]任务安排【cdq+斜率优化】

    cdq复健.jpg 首先列个n方递推,设sf是f的前缀和,st是t的前缀和: \[ f[i]=min(f[j]+s*(sf[n]-sf[j])+st[i]*(sf[i]-sf[j])) \] 然后移项 ...

  10. bzoj 1657: [Usaco2006 Mar]Mooo 奶牛的歌声【单调栈】

    先考虑只能往一边传播,最后正反两边就行 一向右传播为例,一头牛能听到的嚎叫是他左边的牛中与高度严格小于他并且和他之间没有更高的牛,用单调递减的栈维护即可 #include<iostream> ...