plumi video sharing

Overview

December 2017 update

We are moving tickets from the Plumi tracker (trac.plumi.org) here, for historical reasons.

Plumi video sharing system

Plumi is a Free Software video-sharing web application based on Plone and produced by https://www.engagemedia.org in collaboration with https://unweb.me.

Plumi enables you to create your own sophisticated video-sharing site. It includes a beautiful adaptive skin using Diazo, server-side transcoding of most video formats, upload progress bar, thumbnail extraction, HTML5 video playback and embedding, subtitles using Amara, large file uploading via FTP, social media integration, threaded commenting and user feedback forms, customised user profiles and a range of other useful features.

Plumi demo screenshot:

docs/demo.jpg

More info

Installation

Specs

As of December 2016 Plumi has been tested on the following Operating Systems: Debian Jessie, Ubuntu 16, CentOS 7. It can be installed on other systems as well as long as they contain python2.7 and the system dependencies are installed.

For a small/medium portal hosting videos you'd need at least 1 core, 1G RAM, and disk size depending to the size of original videos being uploaded, plus the ones being transcoded (so if you estimate that you'll have 50 videos uploaded, each one of 100MB, you would need at least 70G of disk space)

For bigger installations you would need more RAM and cores. The specs for criticalcommons.org and engagemedia.org, the two biggest plumi installations are:

  • criticalcommons.org: containing thousands of videos. 8 cores, 16G RAM and 2T of disk space.
  • engagemedia.org: almost 10k videos. 2T disk for videos, 8 cores, 13G RAM. The disk OS and plumi is on a SSD disk, while a normal scsi disk is mounted for the transcoded/original videos.

If plumi is installed in /home/plumi.app, then

  • /home/plumi.app/transcoded is used for transcoded videos
  • /home/plumi.app/var/blobstorage for storing the original video files

So after installation you can delete /home/plumi.app/transcoded and /home/plumi.app/var/blobstorage and make them links to a separate disk (so you can maintain it easier). Of course if you can spare the whole system to be on SSD disks, you don't have to keep the above dirs on a separate disk

Installation

Step 1:Install system dependencies

Debian Jessie
root@debian:~# apt-get update; apt-get upgrade -y;
root@debian:~# apt-get install -y build-essential pkg-config git-core python-dev libssl-dev zlib1g-dev libxslt1-dev libjpeg62-turbo-dev groff-base python-virtualenv vim libpcre3 libpcre3-dev
root@debian:~# apt-get update; apt-get upgrade -y
Ubuntu 16.04
root@ubuntu:~# apt-get update; apt-get upgrade -y
root@ubuntu:~# apt-get install -y build-essential pkg-config git-core python-dev libssl-dev zlib1g-dev libxslt1-dev libjpeg62-dev groff-base python-virtualenv vim libpcre3 libpcre3-dev
root@ubuntu:~# apt-get update; apt-get upgrade -y
CentOS 7
root@centos:~# yum groupinstall "Development Tools" -y
root@centos:~# yum install openssl-devel sqlite-devel bzip2-devel libxslt-devel pcre groff ruby-devel libxml2 libxml2-devel libxslt libxslt-devel git-all zlib zlib-devel zlibrary zlib-devel libjpeg-turbo libjpeg-turbo-devel groff groff-perl bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel python-virtualenv tkinter freetype freetype-devel python-lcms lcms-devel python-webpy python-devel x264-devel libvpx-devel python-imaging wget ftp nano vim xz-libs -y

Step 2: Get plumi

We will get plumi from it's github repository and install through a virtualenv environment. We'll install plumi in /home/plumi.app

root@user:~# cd /home/
root@user:/home# git clone https://github.com/plumi/plumi.app/
root@user:/home# cd plumi.app
root@user:/home/plumi.app# virtualenv --no-setuptools .

Add users zope and www-data to the system (if server has nginx or apache www-data will be there already):

root@user:/home# adduser zope
root@user:/home# adduser www-data

step 3: Edit settings

Edit file site.cfg and change users, if necessary (ftp user, cache user, etc). We'll leave the default site.cfg settings, that allow us to start supervisord (a supervisor process that is responsible to start/stop/monitor all processes plumi needs in order to run) as root, and then chmod to simple system users. Plumi processes can run as different users, for security reasons, while the default settings require that a user zope exists in order to run uwsgi web server.

However, we need to change these two lines:

www-server-name = new.plumi.org
www-videoserver-name = newvideos.plumi.org

into:

www-server-name = mgogoulos.plumi.org
www-videoserver-name = videos-mgogoulos.plumi.org

to reflect our existing dns. We need 2 dns names for plumi and the transcode daemon although they exist on the same system.

If this is a testing installation and we don't have dns yet, we can let the default settings (new.plumi.org and newvideos.plumi.org) and set these dns on our local /etc/hosts:

www.xx.yyy.zzz new.plumi.org newvideos.plumi.org

where www.xx.yyy.zzz is your ip address. After the buildout finishes we'll open our browser on http://new.plumi.org and will see the plumi installation

Make sure you set the same dns entries on /etc/hosts on both plumi server and your local system, if you're going to use dns names that are not resolvable, otherwise plumi won't behave correctly

Step 4: Run the buildout

root@user:/home/plumi.app# ./bin/python bootstrap.py && ./bin/buildout -v

This takes some time, it downloads and installs (on our virtualenv) all necessary packages for plumi to run, then installs the software and creates a plumi portal (on top of Plone).

Step 5 Install ffmpeg

There are 3 ways we can use ffmpeg to transcode videos:

  1. Install ffmpeg via source. Make sure it gets installed with libvpx/libvorbis
  2. Install ffmpeg via system package. We will cover this case for the 3 operating systems mentioned
  3. Install ffmpeg through the plumi buildout. This is tuned to compile ffmpeg with required settings and install ffmpeg on plumi installation dir. However the buildout hasn't been tested on all the 3 operating systems. On Debian Jessie buildout completes well and ffmpeg can trancode webm profiles, but segfaults when compiling mp4 files (so this cannot be used on Debian Jessie)

We will cover the system package installation here:

Debian Jessie

ffmpeg can be found on Debian Backports. To enable edit /etc/apt/sources.list and append line:

deb http://ftp.debian.org/debian jessie-backports main

Now install ffmpeg:

apt-get update; apt-get install ffmpeg -y
Ubuntu 16.04

ffmpeg is part of the packages of a default Ubuntu 16.04 distribution so use apt-get install to install

root@ubuntu:~# apt-get update; apt-get install ffmpeg -y
CentOS 7

ffmpeg can be found on atrpms repo. Enable epel-release before we can install ffmpeg:

root@centos:~# yum -y install epel-release
root@centos:~# rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm
root@centos:~# rpm -ivh https://www.mirrorservice.org/sites/dl.atrpms.net/el7-x86_64/atrpms/stable/atrpms-repo-7-7.el7.x86_64.rpm

Now edit /etc/yum.repos.d/atrpms.repo and under [atrpms] change the baseurl and enabled from. Set:

baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
enabled=1

to:

baseurl=https://www.mirrorservice.org/sites/dl.atrpms.net/el$releasever-$basearch/atrpms/stable
enabled=0

now you can install ffmpeg:

root@centos:~# yum -y install ffmpeg

Step 6: start supervisord

With plumi buildout having finished and ffmpeg installed on our system, it's time to run supervisord:

root@user:/home/plumi.app# ./bin/supervisord

after a few seconds, check that everything is up and running:

root@user:/home/plumi.app# ./bin/supervisorctl status
cache                            RUNNING    pid 22650, uptime 0:21:29
nginx                            RUNNING    pid 22651, uptime 0:21:29
ploneftp                         RUNNING    pid 22649, uptime 0:21:29
transcodedaemon                  RUNNING    pid 22612  uptime 0:21:29
uwsgi                            RUNNING    pid 22646, uptime 0:21:29
worker                           RUNNING    pid 22647, uptime 0:21:29
zeo                              RUNNING    pid 22645, uptime 0:21:29

(in case something is not running, check logs on var/log and partrs/transcodedaemon)

We have noticed that the worker process does not start properly some times. If that's the case, edit file parts/worker/etc/zope.conf and on the zodb_db main section make sure the blob-dir is set as the full path on the filesystem (eg /home/plumi.app/var/blobstorage).

We are good! Let's open a browser to http://new.plumi.org and see Plumi

Screenshot of an installed Plumi site:

docs/plumi-vanilla.jpg

Other sources

  • Deprecated installation instructions can also be found on docs/INSTALL.rst
  • For migration instructions see docs/MIGRATE.txt

Help and support

Comments
  • Add Link Back to video/view page on html5 player and flowplayer

    Add Link Back to video/view page on html5 player and flowplayer

    Reported by anna on 21 Jan 2009 06:06 UTC Moving this back from EngageMedia Trac.

    Currently there is no link back to the video/view page in the object/embed tags generated by Flowplayer.

    It would be cool to have a little EM logo in the Flowplayer that you could click on, or a text link to take you back to the EM site to the video/view Page.

    The easiest would presumably to add a couple of line of HTML under the tag that is generated like this:

    <br>
    <a href="[TO VIDEO VIEW PAGE](LINK)">View/download this video on [NAME](SITE)</a>
    

    We're missing out on promotion and bringing people into the Plumi site's community without some kind of link back.

    opened by mgogoulos 42
  • 16:9 Flow player support

    16:9 Flow player support

    Reported by and on 13 Jul 2007 17:59 UTC Currently videos that are shot 16x9 are converted by IndyTube to be 4x3. This makes them look rather ugly. It would be good if IndyTube could recognise the frame ratio of the video and transcode it with the same ratio in mind. Ie so a 16x9 video maintained the ratio of 16x9 after it was transcoded.

    opened by mgogoulos 32
  • Changes to Video Upload & Publish Form

    Changes to Video Upload & Publish Form

    Reported by anna on 3 Dec 2010 01:15 UTC

    • merge steps to make this new Publish form one step only

    • implement upload progress bar, and allow user to add metadata while video is uploading

    • add a "Creator" field - the creator and/or copyright owner rather than the more granular "Director" or "Producer" (though what impact will this have on our archive of videos we have already collected?)

    • make most of the fields currently available in Step 1 (Director, Producer, Production Company etc.) appear in an "Advanced" section (hidden with Ajax until selected) to make the publish form less daunting

    Should we leave these changes until after we have specced out our UI re-design?

    opened by mgogoulos 27
  • List Number of Views and Downloads on Video_View Template

    List Number of Views and Downloads on Video_View Template

    Reported by anna on 7 Nov 2007 07:27 UTC Contributors to Plumi sites would like to be able to see how many views and downloads have occurred for each of their videos. Seeing the number of people who have seen their video greatly encourages people to contribute. Not being able to see this means that video makers are unable to assess the effectiveness of distribution via the Plumi site.

    A method for collecting data on the number of times the video has been played in the Flowplayer in addition to the number of times the download video link has been clicked should be established. Then this data should be stored and called in the video_view template.

    The way this information is available to the viewer on YouTube can be seen in the attached screenshot.

    opened by mgogoulos 27
  • Producer Donations - Add PayPal Account to Profile, List on Video View and Author Pages

    Producer Donations - Add PayPal Account to Profile, List on Video View and Author Pages

    Reported by anonymous on 8 Feb 2008 04:13 UTC Add a simple implementation of a system for donations to producers. Those users with a PayPal account should be able to add their PayPal email address to their profile on Plumi sites.

    If a member has added their PayPal email address to this field, a Donate to Producer button will be displayed on their /author page. It will also be displayed on the video/view page of any of their videos.

    The graphic can be created once this functionality has been implemented (note: should be relatively discreet).

    This will mean that videomakers can use EngageMedia as a fundraising tool for future productions, and allow other members/users of the site to make a financial contribution to their video work. It should also be a good selling point for Plumi software as far as independent videomakers are concerned, as they are always strapped for cash.

    We can add other services to the list of supported services as we go forward - PayMate for Australia, Chip-In etc.

    Links to how to implement donations on PayPal.com: https://www.paypal.com/IntegrationCenter/ic_standard_home.html#DonationButtons https://www.paypal.com/IntegrationCenter/ic_button-encryption.html https://www.paypal.com/IntegrationCenter/ic_std-variable-ref-donate.html

    opened by mgogoulos 22
  • buildout error on Ubuntu 16.04

    buildout error on Ubuntu 16.04

    Dear Contributors,

    I'm having trouble building plumi from with a virtualenv and buildout. Error log is pasted below. Could you please advise how to fix that?

    Thanks in advance!

    Generated script '/root/plumi.app/bin/plumisite'. Installing auto-install-plumisite. . . . . . . . . . . . daemon manager not running Traceback (most recent call last): File "", line 1, in File "/root/plumi.app/eggs/Zope2-2.13.15-py2.7.egg/Zope2/init.py", line 51, in app File "/root/plumi.app/eggs/Zope2-2.13.15-py2.7.egg/Zope2/init.py", line 46, in startup ImportError: No module named App.startup While: Installing auto-install-plumisite.

    An internal error occurred due to a bug in either zc.buildout or in a recipe being used: Traceback (most recent call last): File "/root/plumi.app/eggs/zc.buildout-2.5.3-py2.7.egg/zc/buildout/buildout.py", line 1995, in main getattr(buildout, command)(args) File "/root/plumi.app/eggs/zc.buildout-2.5.3-py2.7.egg/zc/buildout/buildout.py", line 666, in install installed_files = self[part]._call(recipe.install) File "/root/plumi.app/eggs/zc.buildout-2.5.3-py2.7.egg/zc/buildout/buildout.py", line 1410, in _call return f() File "/root/plumi.app/eggs/collective.recipe.cmd-0.8-py2.7.egg/collective/recipe/cmd/init.py", line 48, in install self.execute() File "/root/plumi.app/eggs/collective.recipe.cmd-0.8-py2.7.egg/collective/recipe/cmd/init.py", line 61, in execute run_commands(cmds, self.shell) File "/root/plumi.app/eggs/collective.recipe.cmd-0.8-py2.7.egg/collective/recipe/cmd/init.py", line 33, in run_commands check_call('%s %s' % (shell, tmpfile), shell=True) File "/usr/lib/python2.7/subprocess.py", line 541, in check_call raise CalledProcessError(retcode, cmd) CalledProcessError: Command 'sh /tmp/tmpQ0vOK6/run' returned non-zero exit status 1

    opened by electrodyssey 0
  • src/event/ngx_event_openssl.c

    src/event/ngx_event_openssl.c

    src/event/ngx_event_openssl.c
    

    src/event/ngx_event_openssl.c: In function 'ngx_ssl_dhparam': src/event/ngx_event_openssl.c:573:11: error: dereferencing pointer to incomplete type 'DH {aka struct dh_st}' dh->p = BN_bin2bn(dh1024_p, sizeof(dh1024_p), NULL); ^~ src/event/ngx_event_openssl.c: In function 'ngx_ssl_handshake': src/event/ngx_event_openssl.c:791:31: error: dereferencing pointer to incomplete type 'SSL {aka struct ssl_st}' if (c->ssl->connection->s3) { ^~ src/event/ngx_event_openssl.c: In function 'ngx_ssl_connection_error': src/event/ngx_event_openssl.c:1508:21: error: 'SSL_R_NO_CIPHERS_PASSED' undeclared (first use in this function) || n == SSL_R_NO_CIPHERS_PASSED /* 182 */ ^~~~~~~~~~~~~~~~~~~~~~~ src/event/ngx_event_openssl.c:1508:21: note: each undeclared identifier is reported only once for each function it appears in In file included from src/core/ngx_core.h:45:0, from src/event/ngx_event_openssl.c:9: src/event/ngx_event_openssl.c: In function 'ngx_ssl_new_session': src/event/ngx_event_openssl.c:1850:24: error: dereferencing pointer to incomplete type 'SSL_SESSION {aka struct ssl_session_st}' ngx_memcpy(id, sess->session_id, sess->session_id_length); ^ src/core/ngx_string.h:102:54: note: in definition of macro 'ngx_memcpy' #define ngx_memcpy(dst, src, n) (void) memcpy(dst, src, n) ^~~ objs/Makefile:762: recipe for target 'objs/src/event/ngx_event_openssl.o' failed make[1]: *** [objs/src/event/ngx_event_openssl.o] Error 1 make[1]: Leaving directory '/opt/plumi.app/parts/nginx-build__compile__/nginx-1.3.8' Makefile:8: recipe for target 'build' failed make: *** [build] Error 2 nginx-build: Command failed with exit code 2: make nginx-build: Compilation error. The package is left as is at /opt/plumi.app/parts/nginx-build__compile__/nginx-1.3.8 where you can inspect what went wrong While: Installing nginx-build. Error: System error

    opened by Cgruppo 0
  • still active?

    still active?

    Is Plumi still being actively developed? I see no commits in 2018, and only 4 small things in 2017. Your blog also had no posts in 2017 and 2018. Plus I see 123 open tickets, with one from 2018, and it's unanswered.

    opened by EndeavourAccuracy 4
  • installation issues on Ubuntu 16.04

    installation issues on Ubuntu 16.04

    hello-

    I am having issues installing the latest version of plumi on ubuntu 16.04. I created a new VM and installed ubuntu fresh, then started running through the install instructions. Steps 1-3 were completed without issue, but when I ran the buildout in step #4 I got the following error:

    An internal error occurred due to a bug in either zc.buildout or in a
    recipe being used:
    Traceback (most recent call last):
      File "/plumi.app/eggs/zc.buildout-2.10.0-py2.7.egg/zc/buildout/buildout.py", line 2123, in main
        getattr(buildout, command)(args)
      File "/plumi.app/eggs/zc.buildout-2.10.0-py2.7.egg/zc/buildout/buildout.py", line 637, in install
        self._load_extensions()
      File "/plumi.app/eggs/zc.buildout-2.10.0-py2.7.egg/zc/buildout/buildout.py", line 1163, in _load_extensions
        newest=self.newest, allow_hosts=self._allow_hosts)
      File "/plumi.app/eggs/zc.buildout-2.10.0-py2.7.egg/zc/buildout/easy_install.py", line 920, in install
        return installer.install(specs, working_set)
      File "/plumi.app/eggs/zc.buildout-2.10.0-py2.7.egg/zc/buildout/easy_install.py", line 721, in install
        for dist in self._get_dist(req, ws):
      File "/plumi.app/eggs/zc.buildout-2.10.0-py2.7.egg/zc/buildout/easy_install.py", line 577, in _get_dist
        dist = self._env.best_match(requirement, ws)
      File "build/bdist.linux-x86_64/egg/pkg_resources/__init__.py", line 1111, in best_match
        dist = working_set.find(req)
      File "build/bdist.linux-x86_64/egg/pkg_resources/__init__.py", line 715, in find
        raise VersionConflict(dist, req)
    VersionConflict: (zc.buildout 2.10.0 (/plumi.app/eggs/zc.buildout-2.10.0-py2.7.egg), Requirement.parse('zc.buildout==2.5.3'))
    

    Thank you for your assistance.

    opened by danikuci1 0
  • PayPal donations error

    PayPal donations error

    Reported by anna on 29 Nov 2016 08:42 UTC Author pages include the ability to donate to the filmmaker via Paypal. https://www.engagemedia.org/author/anna

    However, clicking the button gets an error from Paypal:

    
    Error Detected
    Error Message
    
    We were unable to decrypt the certificate id.
    

    https://www.paypal.com/cgi-bin/webscr

    Not sure if this is to do with new site or a different issue?

    opened by mgogoulos 1
  • Title/Heading for Portlet Missing -

    Title/Heading for Portlet Missing - "Comments"

    Reported by anna on 29 Nov 2016 07:10 UTC https://www.engagemedia.org/

    The portlet for latest comments, in the sidebar, is missing the header, it is blank.

    See screenshot

    opened by mgogoulos 2
Owner
Plumi
open source video sharing
Plumi
video streaming userbot (vsu) based on pytgcalls for streaming video trought the telegram video chat group.

VIDEO STREAM USERBOT ✨ an another telegram userbot for streaming video trought the telegram video chat. Environmental Variables ?? API_ID : Get this v

levina 6 Oct 17, 2021
Streamlink is a CLI utility which pipes video streams from various services into a video player

Streamlink is a CLI utility which pipes video streams from various services into a video player

null 8.2k Dec 26, 2022
MoviePy is a Python library for video editing, can read and write all the most common audio and video formats

MoviePy is a Python library for video editing: cutting, concatenations, title insertions, video compositing (a.k.a. non-linear editing), video processing, and creation of custom effects. See the gallery for some examples of use.

null 10k Jan 8, 2023
A youtube video link or id to video thumbnail python package.

Youtube-Video-Thumbnail A youtube video link or id to video thumbnail python package. Made with Python3

Fayas Noushad 10 Oct 21, 2022
Text2Video's purpose is to help people create videos quickly and easily by simply typing out the video’s script and a description of images to include in the video.

Text2Video Text2Video's purpose is to help people create videos quickly and easily by simply typing out the video’s script and a description of images

Josh Chen 19 Nov 22, 2022
Filtering user-generated video content(SberZvukTechDays)Filtering user-generated video content(SberZvukTechDays)

Filtering user-generated video content(SberZvukTechDays) Table of contents General info Team members Technologies Setup Result General info This is a

Roman 6 Apr 6, 2022
Extracting frames from video and create video using frames

Extracting frames from video and create video using frames This program uses opencv library to extract the frames from video and create video from ext

null 1 Nov 19, 2021
Telegram Video Chat Video Streaming bot 🇱🇰

?? Get SESSION_NAME from below: Pyrogram ?? Preview ✨ Features Music & Video stream support MultiChat support Playlist & Queue support Skip, Pause, Re

DOOZY YEZ 5 Jun 26, 2022
Play Video & Music on Telegram Group Video Chat

?? DEMONGIRL ?? ʜᴇʟʟᴏ ❤️ ???? Join us ᴠɪᴅᴇᴏ sᴛʀᴇᴀᴍ ɪs ᴀɴ ᴀᴅᴠᴀɴᴄᴇᴅ ᴛᴇʟᴇʀᴀᴍ ʙᴏᴛ ᴛʜᴀᴛ's ᴀʟʟᴏᴡ ʏᴏᴜ ᴛᴏ ᴘʟᴀʏ ᴠɪᴅᴇᴏ & ᴍᴜsɪᴄ ᴏɴ ᴛᴇʟᴇɢʀᴀᴍ ɢʀᴏᴜᴘ ᴠɪᴅᴇᴏ ᴄʜᴀᴛ ?? ɢ

Jonathan 5 Dec 31, 2021
Takes a video as an input and creates a video which is suitable to upload on Youtube Shorts and Tik Tok (1080x1920 resolution).

Shorts-Tik-Tok-Creator Takes a video as an input and creates a video which is suitable to upload on Youtube Shorts and Tik Tok (1080x1920 resolution).

Arber Hakaj 5 Nov 9, 2022
Turn any live video stream or locally stored video into a dataset of interesting samples for ML training, or any other type of analysis.

Sieve Video Data Collection Example Find samples that are interesting within hours of raw video, for free and completely automatically using Sieve API

Sieve 72 Aug 1, 2022
Video-to-GIF-Converter - A small code snippet that can be used to convert any video to a gif

Video to GIF Converter Project Description: This is a small code snippet that ca

Hassan Shahzad 3 Jun 22, 2022
Video-stream - A telegram video stream bot repo

This is a Telegram Video stream Bot. Binary Tech ?? Features stream videos downl

silentz lk 1 Feb 2, 2022
Terminal-Video-Player - A program that can display video in the terminal using ascii characters

Terminal-Video-Player - A program that can display video in the terminal using ascii characters

null 15 Nov 10, 2022
Video processing routines for SciPy

scikit-video Video Processing SciKit BETA Video processing algorithms, including I/O, quality metrics, temporal filtering, motion/object detection, mo

Alex Izvorski 119 Dec 27, 2022
High-performance cross-platform Video Processing Python framework powerpacked with unique trailblazing features :fire:

Releases | Gears | Documentation | Installation | License VidGear is a High-Performance Video Processing Python Library that provides an easy-to-use,

Abhishek Thakur 2.6k Dec 28, 2022
Boltstream Live Video Streaming Website + Backend

Boltstream Self-hosted Live Video Streaming Website + Backend Reference

Ben Wilber 1.7k Dec 28, 2022
Real-time video and audio streams over the network, with Streamlit.

streamlit-webrtc Example You can try out the sample app using the following commands.

Yuichiro Tachibana (Tsuchiya) 648 Jan 1, 2023
This program is to make a video based on Deep Dream

This program is to make a video based on Deep Dream. The program is modified from DeepDreamAnim and DeepDreamVideo with additional functions for bleding two frames based on the optical flows. It also supports the image division to apply the Deep Dream algorithm to a large image.

Aertist 23 Jan 22, 2022